我使用OpenJPA加入繼承策略(InheritanceType.JOINED - 所以超類中的所有字段都有一個表,並且子類表只包含添加的所有字段的字段子類,加上一個返回超類表的引用)。 比方說,我有一個超類的人,以及一些子類:TypeAPerson,TypeBPerson等具有查詢時,如:OpenJPA加入繼承 - 避免數據庫連接
@NamedQuery(
name="Person.findByName",
query="SELECT p FROM Person p WHERE p.name = :name")
至於我很熟悉,我不會得到一個Person實例,但正確的子類實例。 正如here所述,爲了實現這一點並獲得適當的子類,OpenJPA將進行多個連接(每個子類一個連接)。這有很糟糕的表現,特別是如果我有很多子類。 我的問題是,如果有任何方法可以通過給JPA提示哪個表加入來避免這種情況?我想到的第一件事就是使用Discriminator值。 OpenJPA支持使用加入策略的判別器,所以它應該能夠從判別器值中確定一個子類(並因此加入一個適當的表)?有沒有辦法做到這一點? 有沒有其他方法可以避免不必要的數據庫連接?
我不是專家,但DiscriminatorColumn可能是解決方案。請查看Joined Inheritance and DiscriminatorColumn usage [here](http://wiki.eclipse.org/EclipseLink/Examples/JPA/Inheritance)的完整示例。 – perissf