我目前正在努力将现有的数据库模式映射到 jpa 实体,并且在很多奇怪的情况下,我已经陷入了这个问题。
我有两个表,类似于:
Table 1 Table 2
|Service | |Servicetype |
|servicetype | |Servicecategory |
| | | |
其中servicetype
表 1 是表 2 中服务类型的外键。但是,表 1 中的服务根据它们所属的类别具有截然不同的行为(虽然有 100 多种服务类型,但只有 4 个类别)我希望能够将表 1 映射到四个不同的实体类,基于其服务类型的类别。
这是我到目前为止所拥有的:
@Entity
@Table(name = "table1")
@DiscriminatorColumn(name = "servicecategory", discriminatorType =
discriminatorType.INTEGER)
@DiscriminatorValue("1")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@SecondaryTable(name = "table2",
pkJoinColumns =
@PrimaryKeyJoinColumn(name = "servicetype", referencedColumnName =
"servicetype"))
public class AbstractService implements Serializable {
...etc
并且从这个扩展了 4 个类,但是有一个不同的discriminatorvalue
,这是行不通的,因为我正在使用的 eclipselink 试图在 table1 中查找 servicecategory 的值。
是否可以用 jpa 表达这样的映射,或者我应该只where servicecategory = ?
在每个查询上用 " " 进行映射。