0
我有以下映射:Hibernate基於相關實體屬性是否爲空來查詢實體?
<class name="Customer">
<!-- actually one-to-one for all intents and purposes-->
<many-to-one name="specialProperty" class="SpecialProperty" cascade="all" not-found="ignore" insert="false" update="false" column="id" unique="true"/>
</class
<class name="SpecialProperty" lazy="false">
<id name="id" column="customer_id">
<generator class="foreign">
<param name="property">customer</param>
</generator>
<one-to-one name="customer" class="Customer" constrained="true"></one-to-one>
</class>
使用這種映射,customer.specialProperty爲空時,有在special_properties表中的特定客戶沒有條目。(使用常規的一對一映射結果在持有代理對象的specialProperty中,所以我無法測試null)因此,在代碼中,我可以簡單地執行customer.specialProperty == null以查看Customer是否具有SpecialProperty。
我試圖編寫一個查詢,它將返回所有擁有非空SpecialProperty的客戶,以及另一個將返回所有擁有null SpecialProperty的客戶的查詢。
我能得到誰擁有非空SpecialProperty像這樣的客戶:
from Customer customer inner join customer.specialProperty
但是,我不能讓沒有SpecialProperty(如customer.specialProperty == NULL)
誰的客戶我試過幾件事。基本上我想要的是像
from Customer customer where customer.specialProperty is null
但這生成SQL,對於customer.id測試無論出於何種原因被空。
對此提出建議?
好吧,這就解釋了爲什麼它在生成的查詢中檢查customer.id。然而,該列=「id」是必要的,因爲SpecialProperty實際上是由該表的主鍵表示的。 (SpecialProperty的主鍵是對客戶PK的參考) – Boden 2009-05-22 03:26:16