Hibernate在枚举数据类型列上执行IN查询 [英] Hibernate execute IN query on an enum data type column
本文介绍了Hibernate在枚举数据类型列上执行IN查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
目前,我有一个列有一个数据类型枚举的表。我的问题是我可以在这个列上执行IN查询吗?
Currently, I have a table that has a column which has a datatype enum. My question is can I execute a IN query on this column?
例如:
For example:
enum Gender { MALE, FEMALE, GAY };
Table Student (
String name;
Gender gender;
)
我可以执行:
SELECT * FROM Student WHERE gender IN ('MALE', 'FEMALE');
请注意,我使用string作为in的参数,但是我得到:
Note that I use string as the parameter for in, but I'm getting:
Caused by: java.lang.IllegalArgumentException: Parameter value [('MALE')] did not match expected type [Gender]
是否有解决此问题的方法?
Is there a workaround on this issue?
czetsuya
Thanks,
czetsuya
推荐答案
由于无法识别字符串值,请执行以下代码(假设您已经使用使用默认的 EnumType ):
Since string values are not recognised, execute the following code (Assuming you have used Enum with default EnumType):
SELECT * FROM Student WHERE gender IN (0,1);
如果使用EnumType.String
If using EnumType.String
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);
这篇关于Hibernate在枚举数据类型列上执行IN查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文