目前,我有一个表,它有一个数据类型为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);