@NamedQueries(  
   {   
 @NamedQuery(name = "GetAvailableProducts", query = new StringBuilder("").append("SELECT p   FROM Product p WHERE p.type= :type AND (p.available = 'ALL' OR").append(isTest() ? "(p.available = 'TEST' OR)"  : " ").append("p.available = :available)")),  
 }

这给了我一个错误,它无法识别istest()方法。如果我将if语句作为LIK IF(1 == 1)或类似的内容,而不是此方法,则在Intellij Idea中说“属性必须为constans”。怎么解决?

有帮助吗?

解决方案

Java注释的参数只能是编译时常数。这是行不通的。

参考页: 注释

引用:

定义注释类型后,您可以使用它来注释声明。注释是一种特殊的修饰符,可以在任何其他修饰符(例如公共,静态或最终)的任何地方使用。按照惯例,注释在其他修饰符之前。注释由一个符号(@)组成,然后是注释类型和元素值对的括号列表。 值必须是编译时常数。

其他提示

我不相信您可以从命名的Querquery做到这一点。

创建多个命名查询,或者使用动态查询:

 Query query = em.createQuery(...); 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top