我目前正在努力將現有的數據庫模式映射到jpa實體,並且在很多奇怪的問題中,我陷入了這個問題。是否有可能在輔助表上有鑑別器列jpa
我有兩個表,與此類似:
Table 1 Table 2
|Service | |Servicetype |
|servicetype | |Servicecategory |
| | | |
凡servicetype
表1是在表中的兩個的外鍵的服務類型。 但是,表1中的服務基於它們所屬的類別具有非常不同的行爲(雖然有100多種服務類型,但只有4種類別) 我希望能夠將表1映射到四個不同的實體類,基於其服務類型的類別。
這是我到目前爲止有:從這個延伸buth具有不同discriminatorvalue
,不工作
@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班,因爲的EclipseLink,我使用它,試圖查詢table1中的servicecategory的值。
是否有可能用jpa表示這樣的映射,或者我應該在每個查詢上執行「where servicecategory = ?
」的映射。
您是否嘗試在定義中指定表和列名稱? 「table2.servicecategory」 – Chris
在鑑別器列註釋中?是。但生成的查詢已經通過別名指定了表,所以它只是變成$ tablealias.table2.servicecategory – vruum