Hibernate对枚举数据类型列执行IN查询



目前,我有一个表,它有一个数据类型为enum的列。我的问题是,我可以在此列上执行IN查询吗?

例如:

enum Gender { MALE, FEMALE, GAY };
Table Student (
  String name;
  Gender gender;
)

我可以执行吗:

SELECT * FROM Student WHERE gender IN ('MALE', 'FEMALE');

注意,我使用字符串作为in的参数,但我得到的是:

Caused by: java.lang.IllegalArgumentException: Parameter value [('MALE')] did not match expected type [Gender]

这个问题有解决办法吗?

谢谢,
捷克

由于字符串值无法识别,请执行以下代码(假设您使用了默认EnumType的Enum):

SELECT * FROM Student WHERE gender IN (0,1);

如果使用EnumType。字符串

Query query = session.createQuery(
    "SELECT s FROM Student s WHERE s.gender=:g1 or s.gender=:g2");
query.setParameter("g1", Gender.MALE);
query.setParameter("g2", Gender.FEMALE);

最新更新