2011-08-04 72 views
2

休眠被產生用於以下查詢SQL:休眠自動追加1 = 2到生成的查詢

select pcp.id from PersistentContentProfile pcp where pcp.service.id = :service_id and exists(select 1 from Subscription s where s.contentProfile.id = pcp.id and s.status in (:statuses)) 

作爲天然PostgreSQL的查詢:

select persistent0_.id as col_0_0_ 
from ems.nlt_content_profile persistent0_ 
where 
1=2 and 
persistent0_.service_id=? and 
(exists (select 1 
     from ems.nlt_subscription subscripti1_ 
     where subscripti1_.content_profile_id=persistent0_.id and 
     (subscripti1_.status in (?,?)))) 

觀察

「 1 = 2'

追加到查詢中?爲什麼這會被添加?因此,沒有記錄被檢索。

+0

Ravi,你可以發佈你的課程heirarchy? – Zeki

+0

我想到這是由於配置錯誤。我使用的是@ForceDiscriminator,只有在persistence.xml中配置了抽象類,而缺少任何具體子類的配置。不過,如果拋出適當的錯誤,而不是僅追加1 = 2來避免任何結果,那將會很有幫助。 –

+0

離開這裏......'hibernate-core-5.1.1.Final-sources.jar!/org/hibernate/sql/InFragment.java:63' –

回答

-1

我想通了是因爲配置錯誤。我使用的是@ForceDiscriminator,只有在persistence.xml中配置了抽象類,而缺少任何具體子類的配置。

-1

這可能由於以下兩個原因之一而發生。它涉及多態實體。爲了解決這個問題,您需要確保您將基類(不是任何子類)傳遞給createCriteria調用。您還需要確保數據庫中表示的任何子類都使用hibernate註冊。