【发布时间】:2015-01-17 13:32:12
【问题描述】:
给定一个休眠实体Foo
@Entity
@Table(name = "foo")
class Foo {
//ID Field
@Column(name = "bar", nullable = false)
@Enumerated(EnumType.STRING)
private Bar bar;
//Getters, Setters
}
还有一个枚举Bar
enum Bar {
CAT,
CRADLE,
SILVER,
SPOON;
}
我想运行一个查询来检查 Foo.bar 的值是否包含一些字符串 matchString = "ADL"。
目前,我的 DetachedCriteria 对象构造为:
DetachedCriteria.forClass(Foo.class)
.add(Restrictions.like("bar", matchString, MatchMode.ANYWHERE));`
但在调用时会导致java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Enum。
【问题讨论】:
-
如果您使用
enum,那是因为您有一组已定义的值。将enum用作enum,而不是强制使用String。使用in和您需要的值。 -
@BoristheSpider,用例是用户实时过滤
Foo列表,以便在用户键入时过滤项目。 -
就 UI 而言,
enum应该是一个下拉菜单。
标签: java hibernate enums hibernate-mapping