将数据库查找映射到 jpa 实体

Mapping database lookups to jpa entities

我有以下数据库 tables:查找和员工。

查找Table: 具有样本数据的结构。

class_name      value        description
GENDER_CODE       1          Male
GENDER_CODE       2          Female
BANK_CODE         1          HSBC
BANK_CODE         2          CityBank

员工Table:结构样本数据。

id       name      gender_code     bank_code
1        Yusuf         1               1
2        Maher         1               2
3        Suzan         2               1

将它们映射到 JPA 实体的最佳方法是什么?

我试图将摘要 class 映射到查找 table 并使用 class_name 列作为子 classes 性别和银行的鉴别器并引用银行和员工对象中的性别为 ManyToOne .. 但是当 gender_codebank_code 具有相同的值时,我得到一个 class 转换异常。

我尝试创建视图 gender_lookupBank_lookup 并将它们直接映射到实体。 hibernate 再次抱怨他找不到具有这样名称的 table。

我会尝试将查找表映射为 n+1 个分离的实体,一个抽象实体和 n 个子实体。

映射的超类应具有 SINGLE_TABLE 继承,子类 类 需要声明鉴别器。

像这样:

@MappedSuperclass
@DiscriminatorColumn(name = "class_name")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public abstract class LookupTable{

    @Id
    private Long vale;

    @Column(nullable = false)
    private String description;

    // Getters and setters
}

@Entity
@DiscriminatorValue("GENDER_CODE")
public class GenderCode extends LookupTable() {

}


@Entity
@DiscriminatorValue("BANK_CODE")
public class BankCode extends LookupTable() {

}

@Entity
public class Employee{

    @Id
    private Long id;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private GenderCode genderCode;

    @Column(nullable = false)
    private BankCode bankCode;
}