我有以下的数据库表:查找和员工。
查找表:结构有样本数据。
class_name value description
GENDER_CODE 1 Male
GENDER_CODE 2 Female
BANK_CODE 1 HSBC
BANK_CODE 2 CityBank
雇员表:结构有样本数据。
id name gender_code bank_code
1 Yusuf 1 1
2 Maher 1 2
3 Suzan 2 1
什么是它们映射到JPA实体的最佳方法是什么?
我试图映射一个抽象类来查找表和使用class_name
列作为鉴别的子类性别与银行和引用银行和性别作为多对一的员工对象..但我得到一个类转换异常时gender_code
和bank_code
具有相同的值。
我试图创建视图gender_lookup
和Bank_lookup
和直接映射他们的实体。再次休眠抱怨他无法找到一个表,这样的名称。
我想尝试的LookupTable中映射为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;
}