我正在开发一个JAVA + Hibernate项目,但是目前,我在代码中看到了一个接口(interface)(即ReturningWork<Long>),该接口(interface)具有一种称为execute(java.sql.Connection)的方法。
我的问题是这个ReturningWork接口(interface)的用途是什么?

最佳答案

正如我在ozt_a中详细介绍的那样,您可以使用ReturningWork和Work接口(interface)来实现任何需要直接访问Hibernate session 所使用的java.sql.Connection的逻辑。

这是一个简单的示例,它使用ReturningWork接口(interface)执行一个非常简单的查询(您也可以使用on my blog实现)并返回结果。

Session session = em.unwrap(Session.class);
Integer bookCount = session.doReturningWork(new ReturningWork<Integer>() {

    @Override
    public Integer execute(Connection con) throws SQLException {
        // do something useful
        try (PreparedStatement stmt = con.prepareStatement("SELECT count(b.id) FROM Book b")) {
            ResultSet rs = stmt.executeQuery();
            rs.next();
            return rs.getInt(1);
        }
    }
});

log.info("Found " + bookCount + " books.");

08-06 05:58