我有三个表/类,我正在使用左外连接。我正在执行以下查询:
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中没有对应的行时,查询失败,因为hibernate尝试将空值分配给C中的非null属性(我不能将这些属性更改为可为空)。如果C中的行不存在而不是尝试创建具有空值的对象,那么hibernate中是否有设置为C返回空对象?
答案 0 :(得分:0)
如果我不明白错。如果c为null或者无效,你试图获得结果。
你可以把它添加到这样的where子句:
and ((c.name=1234 and c.price=1234) or c.id is null)