我正在使用JPA2
我可以在Ms way
中查询Ms例如,要在两年内找出周年纪念日:
SELECT DATEADD(year, 2, initialdate) AS Anniv
或者了解自初始日期以来已经过了多少年:
SELECT DATEDIFF(year, initialdate, GETDATE()) AS YearsPassed
我无法在JPQL
中找到DATEADD
中的函数
有人可以帮我在JPQL中获得类似的效果吗
答案 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
}
});
或者你在程序逻辑中计算它。