JPA Criteria API导致错误的右括号错误

时间:2015-11-05 07:12:55

标签: jpa eclipselink jpa-2.0 criteria-api

我有以下表达式来连接两列

Expression<String> stringConcat = 
criteriaBuilder.concat(criteriaBuilder.concat(rootPr.get(ProductList_.prodDesc), " # "), 
rootEmp.get(ProductEmp_.empNo));

它以下面的方式用于CriteriQuery,

criteriaQuery.multiselect(root.get(ProductCatalogue_.userId), 
root.get(ProductCatalogue_.productList),criteriaBuilder.selectCase()
.when(criteriaBuilder.equal(root.get(ProductCatalogue_.prodId),"ZCX"), stringConcat)
.otherwise(rootPr.get(ProductList_.prodDesc)));

但是,当生成SQL时,它会抛出错误

  

缺少右括号

因为在if else部分SQL中有一个问号,因为它需要一个参数

THEN (t0.prodDesc = ?)

如何解决此问题?

1 个答案:

答案 0 :(得分:3)

is an EclipseLink bug,已在2.4.2版中修复。 升级到更新的版本,它将工作(在EclipseLink 2.5.2上测试)。