我正在使用java和hibernate注释来定义数据库模式,并希望将一个表中的外键指定为主键。如何将外键设置为java hibernate中的主键
我得到一个错误,当我设置它,并认为它可能是我如何设置外键作为主键,因为当我使用正常的主键时,我没有得到一个错误。
将外键设置为主键的正确方法是什么?建立
我当前的代码是:
@Table(name="BATCH_STEP_EXECUTION_CONTEXT")
public class BatchStepExecutionContext implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JoinColumn(name = "STEP_EXECUTION_ID" , columnDefinition="BIGINT NOT NULL", referencedColumnName="STEP_EXECUTION_ID")
@ForeignKey(name="STEP_EXEC_CTX_FK ")
@IndexColumn(name="IDX_STEP_EXEC_CTX")
private BatchStepExecution batchStepExecution;
,并通过批步骤执行表作为参考:
// bi-directional many-to-one association to Batch Step Execution Context
@OneToMany(mappedBy = "batchStepExecution", cascade = {CascadeType.ALL})
private List<BatchStepExecutionContext> batchStepExecutionContext;
错误我收到的时候我尝试运行代码:
Unable to read the mapped by attribute for batchStepExecutionContext in com.ccs.nbook.domain.model.BatchStepExecutionContext!
我试图在Java代码模型中的表是:
CREATE TABLE BATCH_STEP_EXECUTION
(
STEP_EXECUTION_ID BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY (MAXVALUE 9223372036854775807),
VERSION BIGINT NOT NULL,
STEP_NAME VARCHAR (100) NOT NULL,
JOB_EXECUTION_ID BIGINT NOT NULL,
STATUS VARCHAR (10),
COUNT BIGINT,
CONSTRAINT JOB_EXEC_STEP_FK FOREIGN KEY (JOB_EXECUTION_ID) REFERENCES BATCH_JOB_EXECUTION (JOB_EXECUTION_ID),
PRIMARY KEY (STEP_EXECUTION_ID)
)
;
CREATE TABLE BATCH_STEP_EXECUTION_CONTEXT
(
STEP_EXECUTION_ID BIGINT NOT NULL,
SHORT_CONTEXT VARCHAR (2500) NOT NULL,
SERIALIZED_CONTEXT LONG VARCHAR,
PRIMARY KEY (STEP_EXECUTION_ID),
CONSTRAINT STEP_EXEC_CTX_FK FOREIGN KEY (STEP_EXECUTION_ID) REFERENCES BATCH_STEP_EXECUTION (STEP_EXECUTION_ID)
)
;
所以我想STEP_EXECUTION_ID的两个表之间的关系模型,其中它在BATCH_STEP_EXECUTION一个主键,在BATCH_STEP_EXECUTION_CONTEXT
也许这个链接可以是有用的。 http://stackoverflow.com/questions/16287007/hibernate-envers-unable-to-read-the-mapped-by-attribute –