1

基本的に、EMPLOYEE テーブルの他の列 (PROFILE_EMPLOYEE_NAME_ID & PROFILE_EMPLOYEE_STATUS_ID) に EMPLOYEE_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 が設計した方法です。あるいは、このデザインの目的をまだ理解していないのかもしれません。

アノテーションを使用してそれを行う方法はありますか? そうでなければ、それに対する最善の解決策は何ですか?

4

0 に答える 0