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

时间:2015-02-19 22:24:39

标签: java hibernate jdbc

我有一个名为find_slow_persons()的存储过程,它返回一个包含两列的表:

RETURNS TABLE(
        person_id           BIGINT,
        time_late_by        DOUBLE PRECISION
        )

使用Hibernate,我可以通过2次调用获得这两个列的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();

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

1 个答案:

答案 0 :(得分:2)

您是否有理由将该列分为两个查询?如果不是,以下内容应具有预期效果:

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();