java - 在 Hibernate 中获取 JDBC 结果集

标签 java hibernate

如何使用 hibernate 获取 JDBC 结果集。在一种情况下,我想调用一个存储过程,它会进行一些计算并从多个表中选择一些列。
所以在我的存储过程中我有类似

的东西
selct sum(c1) as TotalVal, avg(c2) as AverageVal from .... 

因此,我想在我的 Java 代码中获取这些列值并对其进行更多处理。 但是,我无法在 Java 代码中获取过程调用的结果集。

谁能告诉我怎么做?

我正在使用 Hibernate4,所以找不到 session.connection() 方法。此外,我尝试使用 doWork(),但如何从内部类 Work

获取结果集

最佳答案

您可以使用 Session#doReturningWork(ReturningWork) 从 JDBC 调用返回您想要的结果:

session.beginTransaction();
ResultObject result = session.doReturningWork(new ReturningWork<ResultObject>() {

    @Override
    public ResultObject execute(Connection conn) throws SQLException {
        // execute your SQL
        // create and return result object
    });
}
session.getTransaction().commit();

// work with ResultObject

您可以直接返回 JDBC-ResultSet,但我建议将值存储在一个单独的对象中(此处为:ResultObject),因为 ResultSet 与 JDBC 连接相关,而 JDBC 连接应保存在 execute() 中 方法。

关于java - 在 Hibernate 中获取 JDBC 结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25487070/

相关文章:

sql - 通过 Hibernate 更新计数器

java - Hibernate:如何查询其集合属性包含特定值的对象?

javax.validation.constraints.Email 匹配无效的电子邮件地址

java - 在 JPA 中映射 Map<Entity, Entity> 结果表中不存在于该描述符中

java - Clover 无法检测 UTF-8 源

Java:父类(super class)中的同步方法与子类中的同步方法获取相同的锁,对吗?

java - 如何优化这个正则表达式?

java - Hibernate 抛出 java.lang.NoClassDefFoundError : org/hibernate/internal/CoreMessageLogger

java - 不带重音的搜索必须返回带重音的单词

java - 创建名称为 'sessionFactory' 的 bean 时出错 : MalformedParameterizedTypeException