- 次に示すJPQLの関数の引数に,位置パラメタや名前パラメタを指定することはできません。
TRIM,SQRT,ABS,LENGTH,LOWER,MOD,LOCATE,UPPER,CONCAT,SUBSTRING,IS [NOT] NULL
これらの関数の引数に位置パラメタや名前パラメタを指定した場合,動作は保証されません。なお,位置パラメタや名前パラメタを指定した場合はHiRDBのSQL構文エラーとなり,SQLException例外を含んだPersistenceException例外をスローすることがあります。
これらの関数の機能を使用したい場合は,ネイティブクエリを使用してください。
- 四則演算子(+,-,*,/)の両側に?パラメタは指定できません。また,比較演算子(=,>,>=,<,<=,<>)の両側に?パラメタを指定したり,片側に?パラメタを指定したりしてもう一方にリテラルを指定することはできません。指定した場合の動作は保証されません。指定した場合はHiRDBのSQL構文エラーとなり,SQLException例外を含んだPersistenceException例外をスローすることがあります。
JPQLの中で四則演算や比較演算しないで,JPQLを使用する前に四則演算や比較演算の操作をしてからJPQLを使用するようにしてください。
HiRDBでJPQLを使用する場合に使用できないクエリの記述例を次に示します。
使用できない例1:関数の引数に位置パラメタを指定する
Query query1 = em.createQuery(
"SELECT o FROM TestEntity o "+
"WHERE o.name=TRIM(LEADING FROM ?1)")
.setParameter(1, " SatoTaro"); |
使用できない例2:四則演算子に位置パラメタを指定する
int no_A=2;
int no_B=4;
Query query2 = em.createQuery(
"SELECT o FROM TestEntity o WHERE o.id = ?1 + ?2")
.setParameter(1, no_A)
.setParameter(2, no_B); |
使用できない例3:比較演算子に位置パラメタを指定する
int cmp_no=3;
Query query3 = em.createQuery(
"SELECT o FROM TestEntity o WHERE o.id = ?1 AND ?1 < 9")
.setParameter(1, cmp_no); |