名前付きクエリにelseステートメントを使用しますか?
-
11-10-2019 - |
質問
@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(...);
所属していません StackOverflow