【问题标题】:Hibernate execute IN query on an enum data type columnHibernate 在枚举数据类型列上执行 IN 查询
【发布时间】:2012-08-22 06:11:17
【问题描述】:

目前,我有一个表,其中包含一个数据类型为枚举的列。我的问题是我可以对此列执行 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]

这个问题有解决办法吗?

谢谢,
嫖娼

【问题讨论】:

  • 同性恋是从什么时候开始的??

标签: hibernate enums


【解决方案1】:

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

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

如果使用 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);

【讨论】:

  • 可惜我用的是EnumType.String,所以只能和String比较。
  • 其实我之前也想过这个,但是我的参数是动态字符串。但我会尝试解析字符串并转换为适当的枚举值。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多