[SPRING] Hibernate Criteria API에서 enum 메소드에 대한 질의
SPRINGHibernate Criteria API에서 enum 메소드에 대한 질의
@Enumerated 필드가 매핑 된 @Entity가 있습니다.
@Entity
@Table
public class Device implements Serializable {
@Id
@GeneratedValue
private Long id;
@Enumerated(EnumType.STRING)
private DeviceType typeOfDevice;
[....]
}
DeviceType은 일반적인 java 5 enum입니다.
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 인 장치 엔터티를 쿼리하려면 어떻게해야합니까?
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();
해결법
-
==============================
1.귀하의 문제에 대한 해결책이
귀하의 문제에 대한 해결책이
Criteria criteria = factory.getCurrentSession().createCriteria(Device.class); Disjunction or = Restrictions.disjunction(); for (DeviceType type : DeviceType.values()) { if (type.isFubar()) { or.add(Restrictions.eq("typeOfDevice", type)); } } criteria.add(or); return criteria;
typeOfDevice.fubar = true 대신 어디서든 (typeOfDevice = Mobile 또는 typeOfDevice = OtherFubar 또는 typeOfDevice = OtherOtherFubar) 행을 따라 접근하고 있습니다. 나는 이것이 당신이 원래 찍었던 한 줄짜리 줄이 아니라는 것을 알고 있습니다. 그러나 나는 묻는 질문에 대답한다고 생각합니다.
-
==============================
2.당신은 그것으로 anotated했습니다
당신은 그것으로 anotated했습니다
@Enumerated(EnumType.STRING)
이것은 열거 형의 이름을 저장합니다. 데이터베이스 열에는 '모바일'또는 '이메일'이 있지만 'true'또는 'false'는 포함되지 않습니다. 당신은에 쿼리를 변경할 수 있습니다
return factory.getCurrentSession().createCriteria(Device.class). add(Restrictions.eq("typeOfDevice", DeviceType.MOBILE)).list();
더 믿을만하지 않아?
from https://stackoverflow.com/questions/7388622/querying-on-enums-method-in-hiberate-criteria-api by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] @valid를 사용하여 스프링 검증 (0) | 2019.02.20 |
---|---|
[SPRING] OS를 평가하는 봄 표현 (0) | 2019.02.20 |
[SPRING] 1로 지정하면 Derby Auto가 100 씩 증가합니다. (0) | 2019.02.20 |
[SPRING] 봄 데이터 나머지 2.0.0.RELEASE 나누기 코드 RC1 이전에 작동 (0) | 2019.02.20 |
[SPRING] 여러 생성자가 존재할 때 autowire = "constructor"로 종속성 삽입? (0) | 2019.02.20 |