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;
}