-1

我正在使用 JPA2

我可以通过以下方式在 Ms Access 中查询它

例如,要找出两年后的周年纪念日:

SELECT DATEADD(year, 2, initialdate) AS Anniv

或者找出自初始日期以来已经过去了多少年:

SELECT DATEDIFF(year, initialdate, GETDATE()) AS YearsPassed

我无法DATEADD在 JPQL中找到函数

有人可以帮我在 JPQL 中获得类似的效果吗

4

1 回答 1

2

Hibernate Session 提供了一种doWork()方法,可以让您直接访问java.sql.Connection. 然后您可以创建并使用java.sql.CallableStatement来执行您的功能。

下面是一个 OracleDB 函数示例:

session.doWork(new Work() {
  public void execute(Connection connection) throws SQLException {
    CallableStatement call = connection.prepareCall("{ ? = call MYSCHEMA.MYFUNC(?,?) }");
    call.registerOutParameter( 1, Types.INTEGER ); // or whatever it is
    call.setLong(2, id);
    call.setLong(3, transId);
    call.execute();
    int result = call.getInt(1); // propagate this back to enclosing class
  }
});

或者你在你的程序逻辑中计算这个。

于 2013-08-07T14:56:13.023 回答