2012-01-05 48 views
4

我有三個表/類,我正在用左外連接提取。我執行以下查詢:當使用createSQLQuery()連接表時,Hibernate可以返回空對象嗎?

List<Object[]> l = session.createSQLQuery("SELECT a.*, b.*, c.* " + 
    " FROM (table_a a INNER JOIN table_b b ON a.some_id = b.some_id) " + 
    " LEFT OUTER JOIN table_c c ON c.some_id = a.some_id" 
).addEntity("a", A.class).addEntity("b", B.class).addEntity("c", C.class).list(); 

查詢時存在於A和B的行但在C中沒有相應的列,如休眠試圖用C分配到非空屬性空值(I失敗不能將這些屬性更改爲可空)。如果C中的某行不存在,而不是嘗試創建一個空值對象,那麼在Hibernate中是否有一個設置爲C返回空對象?

+0

http://community.jboss.org/wiki/AShortPrimerOnFetchingStrategies。你有沒有試過設置'lazy = true'?不確定,如果這有幫助。 – 2012-01-05 22:19:48

+0

我正面臨類似的問題。你有沒有找到解決方案? – jabclab 2012-08-30 11:49:08

回答

0

如果我不明白錯誤。無論如何,如果c爲null或不爲空,則試圖獲得結果。

你可以將它添加到WHERE子句是這樣的:

and ((c.name=1234 and c.price=1234) or c.id is null) 
相關問題