使用createSQLQuery()连接表时,Hibernate可以返回一个null对象吗?

时间:2012-01-05 22:03:27

标签: java sql hibernate join

我有三个表/类,我正在使用左外连接。我正在执行以下查询:

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返回空对象?

1 个答案:

答案 0 :(得分:0)

如果我不明白错。如果c为null或者无效,你试图获得结果。

你可以把它添加到这样的where子句:

and ((c.name=1234 and c.price=1234) or c.id is null)