Hibernate 在两个表上持久化db生成的值
我的数据库中有两个表:Hibernate 在两个表上持久化db生成的值,hibernate,Hibernate,我的数据库中有两个表: CREATE TABLE "D"."EMPDIR_DISPLAY" ( "PST_ENTITY_ID" NUMBER NOT NULL ENABLE, "PST_GRP_ID" NUMBER NOT NULL ENABLE, "FIRST_CHAR" CHAR(1 BYTE), "DISPLAY_URL" VARCHAR2(250 BYTE) NOT NULL ENABLE, "DISPLAY_TEXT"
CREATE TABLE "D"."EMPDIR_DISPLAY"
( "PST_ENTITY_ID" NUMBER NOT NULL ENABLE,
"PST_GRP_ID" NUMBER NOT NULL ENABLE,
"FIRST_CHAR" CHAR(1 BYTE),
"DISPLAY_URL" VARCHAR2(250 BYTE) NOT NULL ENABLE,
"DISPLAY_TEXT" VARCHAR2(250 BYTE) NOT NULL ENABLE,
"ACTIVE_JOBS" NUMBER DEFAULT 0,
CONSTRAINT "PK_EMPDIR_DISPLAY_ID" PRIMARY KEY ("PST_ENTITY_ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "PROVIDER" ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "PROVIDER" ;
及
我已经创建了模型,其中实体ID的顺序从DB SEQ中获取,如下所示:
@Entity
@Table(name="PST_ENTITY")
@Cache(region = "com.daoservice.service.model.EntityModel", usage = CacheConcurrencyStrategy.READ_WRITE)
public class EntityModel {
@Id
@SequenceGenerator(name="entityIdGen" , sequenceName = "PST_ENTITY_ID_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "entityIdGen")
@Column(name="PST_ENTITY_ID", unique = true, nullable = false )
private Integer pstEntityId;
@Column(name="PST_ENTITY_GRP_NAME", nullable = false )
private String pstEntityGrpName;
@Column(name="PST_ENTITY_REGION", nullable = false )
private Integer pstEntityRegion;
...
及
现在,当我持久化这些模型时,EntityModel得到持久化,甚至得到生成的seq。但是EmployerDirModel无疑会因为EntityId的一些问题而给我带来一个NPE 如果要在两个类之间共享ID,请使用联接列
@Entity
class MedicalHistory implements Serializable {
@Id @OneToOne
@JoinColumn(name = "person_id")
Person patient;
}
@Entity
public class Person implements Serializable {
@Id @GeneratedValue Integer id;
}
或者
@Entity
class MedicalHistory implements Serializable {
@Id Integer id;
@MapsId @OneToOne
@JoinColumn(name = "patient_id")
Person patient;
}
@Entity
class Person {
@Id @GeneratedValue Integer id;
}
资料来源:
@Entity
class MedicalHistory implements Serializable {
@Id @OneToOne
@JoinColumn(name = "person_id")
Person patient;
}
@Entity
public class Person implements Serializable {
@Id @GeneratedValue Integer id;
}
@Entity
class MedicalHistory implements Serializable {
@Id Integer id;
@MapsId @OneToOne
@JoinColumn(name = "patient_id")
Person patient;
}
@Entity
class Person {
@Id @GeneratedValue Integer id;
}