Hibernate在枚举数据类型列上执行IN查询 [英] Hibernate execute IN query on an enum data type column

查看:455
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆