1

我可以通过 javax.persistence.EntityManager 执行普通查询。

目前我真的不知道。我会在这篇文章之后尝试进一步搜索,如果你们能有所启发,我将非常感激。

谢谢 :)

4

1 回答 1

0

使用javax.persistence.EntityManager,

使用原始连接

private Connection getConnection(final EntityManager em) {
      HibernateEntityManager hem = (HibernateEntityManager) em;
      SessionImplementor sim = (SessionImplementor) hem.getSession();
      return sim.connection();
}

然后做类似的事情

public boolean myProc(EntityManager pentityManager, String param1, BigDecimal param2, String param3) throws SQLException {

        boolean result = false;

        Connection conn = getConnection(pentityManager); /* code above */
        CallableStatement cs;

        cs = conn.prepareCall("{CALL myPackage.myProc( ?, ?, ?, ? )}");

        //IN params
        cs.setString(1, param1);
        cs.setBigDecimal(2, param2);
        cs.setString(3, param3);

        //OUT param
        cs.registerOutParameter(4, java.sql.Types.BOOLEAN);

        cs.executeUpdate();

        result = cs.getBoolean(4); //get OUT PARAM

        return result;
    }
于 2013-10-21T07:53:35.527 回答