Мне нужно изменить этот SQL-запрос на JPA 2.1 Criteria Subquery
SELECT TABLE.DATE
+ (CASE WHEN DAYOFWEEK(TABLE.DATE) = 7 THEN 2
WHEN DAYOFWEEK(TABLE.DATE) = 6 THEN 3
ELSE 1 END) DAYS
FROM TABLE
WHERE TABLE.PROC_ID = 'XXX'
AND TABLE.CTRL_ID = '1'
WITH UR;
Я пробовал это:
nextBusinessDay.select(
cb.<java.sql.Date>selectCase()
.when(
cb.equal(cb.function("TO_CHAR", Integer.class, subqueryRoot.get(ProcessingInfo_.date), cb.literal("%w")), 7),
cb.function("TIMESTAMPADD", java.sql.Date.class, dayUnitInt, daysToAddWhenSaturday,cb.function("TIMESTAMP",java.sql.Timestamp.class,subqueryRoot.get(ProcessingInfo_.date)) )
// cb.function("NEXT_DAY", java.sql.Date.class,subqueryRoot.get(ProcessingInfo_.date),monday)
)
.when(
cb.equal(cb.function("TO_CHAR", Integer.class, subqueryRoot.get(ProcessingInfo_.date), cb.literal("%w")), 6),
cb.function("TIMESTAMPADD", java.sql.Date.class, dayUnitInt, daysToAddWhenFriday, cb.function("TIMESTAMP",java.sql.Timestamp.class,subqueryRoot.get(ProcessingInfo_.date)))
// cb.function("NEXT_DAY", java.sql.Date.class,subqueryRoot.get(ProcessingInfo_.date),monday)
)
.otherwise(
subqueryRoot.get(ProcessingInfo_.date)
)
););
Но я получаю эту ошибку
Caused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException: THE DATA TYPE, LENGTH, OR VALUE OF ARGUMENT 2 OF TO_CHAR IS INVALID. SQLCODE=-171, SQLSTATE=42815, DRIVER=4.15.82
Вы знаете, как это исправить?