我有一個非常簡單的類層次結構,下面列出,每個子類具有@DiscriminatorValue枚舉類型,它工作得很好。Hibernate映射和繼承問題與@SecondaryTable
抽象類:
是AbstractNode(映射到節點表抽象類)
創建子類類:
FieldNode(簡單的類映射到節點表,以及,但是具有不同的@ DiscriminatorValue值)
SynonymNode(問題類,這個類也映射到節點表與不同@DiscriminatorValue值)
但ALSO具有@SecondaryTable屬性,並且具有額外的列,如deletedDate,createdDate等每個映射到@SecondaryTable屬性中定義的表中的coumns。
林的問題是當我爲節點表做一個簡單的Hibernate查詢
我得到這樣的錯誤:
org.hibernate.exception.GenericJDBCException:無法執行查詢 ... 堆棧跟蹤 ... 產生的原因:值java.sql.SQLException:無效的列名
,在我的日誌中我可以看到:
的Hib ernate: 選擇 * 從 vocab_node 其中 下面(名稱)like'%'|| ? || '%'
INFO [NullableType.java:132]:無法從結果集中讀取列值:DELETED_DATE;無效的列名
我的猜測是,它發現一個行中的數據庫表,然後確定這是一個SynonymNode類類型(由@DiscriminatorValue列),然後嘗試填充類包括映射的額外列的表與@SecondaryTable。
我怎麼能告訴它,左加入@SecondaryTable,或完全排除它爲這個特定的查詢?
謝謝堆!這個問題正在殺死我!
進出口運行的Hibernate 3.2.1和Java 1.5
乾杯, 馬克
我應該提到,到目前爲止,我的工作是在我的SQL中左鍵連接@SecondaryTable,以便至少返回空值並且映射仍然正確。 – Mark 2009-05-18 02:47:29