jpql IN 查询与枚举值
我正在使用JPQL查询来检查列表是否包含指定的枚举值。如果枚举值是要检查的单个元素,那么它非常简单。
在查询表达式中,
query = "... where s.status = :status";
然后设置参数,如
query.setParameter("status", statusValue);
但我想检查下面这样的东西
query = "... where s.status IN (:statusList)";
其中 是一串数字(例如“0,1,2”,表示状态值的列表)statusList
但我找不到解决方案。我也在查询中检查过,但没有运气。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));