如何计算JPQL中的周年日期

时间:2013-08-07 14:21:18

标签: hibernate jpa jpql

我正在使用JPA2

我可以在Ms way

中查询Ms

例如,要在两年内找出周年纪念日:

SELECT DATEADD(year, 2, initialdate) AS Anniv

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

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

我无法在JPQL

中找到DATEADD中的函数

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

1 个答案:

答案 0 :(得分: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
  }
});

或者你在程序逻辑中计算它。