Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当使用createSQLQuery()连接表时,Hibernate能否返回空对象?_Java_Sql_Hibernate_Join - Fatal编程技术网

Java 当使用createSQLQuery()连接表时,Hibernate能否返回空对象?

Java 当使用createSQLQuery()连接表时,Hibernate能否返回空对象?,java,sql,hibernate,join,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" ).addEnti

我有三个表/类,我正在使用左外部联接获取它们。我正在执行以下查询:

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();
List l=session.createSQLQuery(“选择a.*,b.*,c.*”+
“FROM(表a上的内部联接表b.some\u id=b.some\u id)”+
“c.some\u id=a.some\u id上的左外部联接表”
).addEntity(“a”,a.class.)。addEntity(“b”,b.class.)。addEntity(“c”,c.class.)。list();

当A和B中的行存在,但C中没有对应的行时,查询失败,因为hibernate试图将空值分配给C中的非空属性(我无法将这些属性更改为可空)。hibernate中是否有一个设置,如果C中不存在一行,则为C返回一个空对象,而不是尝试创建一个具有空值的对象?

如果我不理解错误的话。若c为null或不为null,则您正在尝试获取结果

您可以将此添加到where子句中,如:

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

. 您是否尝试过设置
lazy=true
?不确定,如果这有帮助的话。我也面临着类似的问题。你找到解决办法了吗?