Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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 在Hibernate中将两个SQL查询调用合并为一个_Java_Hibernate_Jdbc - Fatal编程技术网

Java 在Hibernate中将两个SQL查询调用合并为一个

Java 在Hibernate中将两个SQL查询调用合并为一个,java,hibernate,jdbc,Java,Hibernate,Jdbc,我有一个名为find\u slow\u persons()的存储过程,它返回一个包含两列的表: RETURNS TABLE( person_id BIGINT, time_late_by DOUBLE PRECISION ) 使用Hibernate,我可以通过两次调用获得这两列的值,如List: SQLQuery query = session.createSQLQuery("s

我有一个名为
find\u slow\u persons()
的存储过程,它返回一个包含两列的表:

RETURNS TABLE(
        person_id           BIGINT,
        time_late_by        DOUBLE PRECISION
        )
使用Hibernate,我可以通过两次调用获得这两列的值,如
List

 SQLQuery query =
                session.createSQLQuery("select * from find_slow_persons()").addScalar("person_id", LongType.INSTANCE);

 SQLQuery time =
                session.createSQLQuery("select * from find_slow_persons()").addScalar("time_late_by",
                        LongType.INSTANCE);
List<Long> duplicateDataPointIds = query.list();
List<Long> timeBy = time.list();
SQLQuery=
createSQLQuery(“从find\u slow\u persons()”中选择*).addScalar(“person\u id”,LongType.INSTANCE);
SQLQuery时间=
session.createSQLQuery(“选择*从查找速度慢的人()”).addScalar(“时间晚的人”),
LongType.INSTANCE);
List DuplicateDataPointId=query.List();
List timeBy=time.List();

现在我得到了我想要的两个数据列表,有没有办法将这两个列表组合起来,只进行一次查询?

将列分为两次查询有什么原因吗?如果未达到预期效果,则以下各项应具有预期效果:

session.createSQLQuery("select * from find_slow_persons()")
               .addScalar("person_id", LongType.INSTANCE)
               .addScalar("time_late_by", LongType.INSTANCE)
// returns an object[] List you'll have to unpack
List duplicateDataPointIds = query.list();

我试图打印出它返回的对象数组,为什么它最后缺少一个结束符]?对象数组没有一个toString()方法可以很好地打印它,因为它不知道类型,请尝试将它们转换为long