2013-08-07 1 views
-1

Я использую JPA2Как рассчитать юбилейную дату в JPQL

Я мог бы опрашивается его в Ms Access в следующем way

Например, чтобы выяснить, юбилей в течение двух лет:

SELECT DATEADD(year, 2, initialdate) AS Anniv 

Или, чтобы узнать, сколько лет прошло с тех пор начальная дата:

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

Я не в состоянии найти функцию в DATEADD в JPQL

Может кто-то пожалуйста, помогите мне получить аналогичный эффект в JPQL

+0

Датифик действительно вреден для расчета пройденных лет. –

+0

Поддерживаемые функции JPQL: http://www.datanucleus.org/products/datanucleus/jpa/jpql_functions.html –

ответ

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 
    } 
}); 

Или рассчитать это в пределах вашей логики програмного.

Смежные вопросы