16

リストに指定された列挙値が含まれているかどうかを確認するために JPQL クエリを使用しています。列挙値がチェックする単一の要素である場合、それは非常に簡単です。

クエリ式では、

query = "... where s.status = :status";

次に、次のようなパラメーターを設定します

query.setParameter("status", statusValue);

しかし、私は以下のようなものをチェックしたい

query = "... where s.status IN (:statusList)";

ここstatusListで、数字の文字列です (たとえば、"0,1,2" はステータスの値のリストを意味します)

しかし、私は解決策を見つけることができません。私もs.status.ordinal() IN (statusList)問い合わせで確認しましたが、運がありません。

JPA 実装を使用しています: EclipseLink (JPA 2.0)

私のエンティティの実際の名前はSType

public enum SType
{
    REQUISITION,
    PURCHASE,   
    FINISHED,   
    // others
    RETURN;
}

クエリ:

String querySt = "select s.slipType.slipNameSt,s.slipNumberSt, s.idNr from Slip s 
where s.slipType.sType IN (:enumTypeListt)";

em.createQuery(querySt).setParameter("enumTypeList", EnumSet.of(SType.REQUISITION, 
                                                                SType.PURCHASE));
4

1 に答える 1