質問

@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(1 == 1)またはそのようなものとして配置する場合、Intellijのアイデアで「属性はコンスターンでなければならない」と書かれています。の解き方?

役に立ちましたか?

解決

Javaアノテーションのパラメーターは、コンパイル時間定数のみになります。これはうまくいきません。

参照ページ: 注釈

引用:

注釈タイプが定義されたら、それを使用して宣言を注釈させることができます。注釈は特別な種類の修飾子であり、他の修飾子(公共、静的、最終など)を使用できる場所で使用できます。慣習により、注釈は他の修飾子に先行します。注釈は、AT-Sign(@)に続いて、注釈タイプと要素価値ペアの括弧付きリストで構成されています。 値はコンパイル時間定数である必要があります。

他のヒント

名前の付いた人からこれができるとは思わない。

複数の名前のクエリを作成するか、代わりに動的クエリを使用します。

 Query query = em.createQuery(...); 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top