将数据库查找Map到jpa实体

iq0todco  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(308)

我有以下数据库表:lookup和employee。
查找表:包含示例数据的结构。

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

employee表:包含示例数据的结构。

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

将它们Map到jpa实体的最佳方法是什么?
我尝试将抽象类Map到查找表并使用 class_name 列作为子类gender和bank的鉴别器,并将bank和gender引用为employee对象中的manytone。。但是当 gender_code 以及 bank_code 具有相同的值。
我试图创建视图 gender_lookup 以及 Bank_lookup 并将它们直接Map到实体。hibernate再次抱怨说他找不到具有这样名称的表。

vxqlmq5t

vxqlmq5t1#

我会尝试将lookuptableMap为n+1个分开的实体,一个抽象和n个child。
Map的超类应该有单表继承,子类需要声明鉴别器。
像这样:

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

相关问题