基本上,我只需要将 EMPLOYEE_ID 字段的相同值分配给 EMPLOYEE 表的其他列(PROFILE_EMPLOYEE_NAME_ID 和 PROFILE_EMPLOYEE_STATUS_ID)。
详情如下:
注释类
@SequenceGenerator(name="generator", sequenceName="EMPLOYEE_ID_SEQ")
@Id
@GeneratedValue(strategy=SEQUENCE, generator="generator")
@Column(name="EMPLOYEE_ID", unique=true, nullable=false)
private int employeeId;
@Column(name="PROFILE_EMPLOYEE_NAME_ID", unique=true, nullable=false)
private int profileEmployeeNameId;
@Column(name="PROFILE_EMPLOYEE_STATUS_ID", unique=true, nullable=false)
private int profileEmployeeStatusId;
@OneToMany(cascade = ALL, fetch = EAGER, orphanRemoval = true)
@JoinColumn(name = "SHORT_ID")
@Where(clause = "ELEMENT_TYPE_CD like 'EMPLOYEE_%'")
private Set<Profile> profile;
DDL
EMPLOYEE
EMPLOYEE_ID (Primary key)
PROFILE_EMPLOYEE_NAME_ID
PROFILE_EMPLOYEE_STATUS_ID
PROFILE TABLE
PROFILE_ID (Primary key)
ELEMENT_TYPE_CD (Possible values are: EMPLOYEE_NAME, EMPLOYEE_STATUS)
SHORT_ID
DESCRIPTION
PROFILE 表通过 SHORT_ID = EMPLOYEE_ID 与 Employee 表连接。
我知道 PROFILE_EMPLOYEE_NAME_ID 和 PROFILE_EMPLOYEE_STATUS_ID 是多余的,但这就是 DBA 的设计方式。或者也许我还没有看到这个设计的目的。
有没有办法使用注释来做到这一点?否则,最好的解决方案是什么?