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

标签 java hibernate jdbc

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

RETURNS TABLE(
        person_id           BIGINT,
        time_late_by        DOUBLE PRECISION
        )

使用 Hibernate,我可以通过 2 次调用以 List 形式获取这 2 列的值:

 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 个查询?

最佳答案

您将列分成两个查询是否有原因?如果没有,以下应该会达到预期的效果:

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

关于java - 在 Hibernate 中将两个 SQL 查询调用合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28618222/

相关文章:

java - 如何在 MongoTemplate 中使用多个 orOperator

java - Spring Boot + Flyway + AWS : Caused by: java. sql.SQLException:找不到合适的驱动程序

spring - 需要帮助理解 Tomcat 线程池和 JDBC 连接池

java - 每当 MySQL 表更新时更新 JFrame

java - Jasper 报告 JAVA Swing

java - 通过 Google Cloud Dataflow 编写服务

Java-webservice : Glassfish3. 0 错误 "org.codehaus.jackson.jaxrs.JacksonJsonProvider"

java - java.library.path 中没有 swt-mozilla-gtk-4332

java - 如何创建未分页但已排序的 Pageable.of(unpaged, unpaged, Sort ) 到 spring 数据 jpa 存储库?

spring - Spring 存储库中 EntityManager 注入(inject)时出现 java.lang.NullPointerException