【发布时间】:2011-09-12 13:25:48
【问题描述】:
我有一个 @Entity 映射到它的 @Enumerated 字段:
@Entity
@Table
public class Device implements Serializable {
@Id
@GeneratedValue
private Long id;
@Enumerated(EnumType.STRING)
private DeviceType typeOfDevice;
[....]
}
DeviceType 是一个典型的 java 5 枚举:
public enum DeviceType {
MOBILE(true), EMAIL(false);
private final boolean fubar;
private DeviceType(boolean fubar) {
this.fubar= fubar;
}
public boolean isFubar() {
return fubar;
}
}
如何查询具有typeOfDevice.isFubar() == true 的Device 实体?
return factory.getCurrentSession().createCriteria(Device.class).
add(Restrictions.eq("typeOfDevice.isFubar", true)).list();
工作做得不够好:
return factory.getCurrentSession().createCriteria(Device.class).
createCriteria("typeOfDevice").add(Restrictions.eq("fubar", true)).list();
【问题讨论】: