엔터티 빈 FooEntity
및 DAO 메서드를 사용하여 뷰 모델 Bean FooCount
에 캡슐화 된 해당 엔터티의 속성별로 그룹화 된 행 수를 얻습니다. Projections.count()
가 Integer
대신 Long
을 산출 이후이 실행Hibernate 4.1 결과 투영기를 사용하여 카운트 프로젝션 유형 불일치 (Long/Integer)
public List<FooCount> groupByFoo() {
return sessionFactory.getCurrentSession()
.createCriteria(FooEntity.class)
.setProjection(Projections.projectionList()
.add(Projections.groupProperty("foo"), "foo")
.add(Projections.count("foo"), "count")
).setResultTransformer(Transformers.aliasToBean(FooCount.class))
.list();
}
public class FooCount {
private String foo;
private Integer count; // <-- this is the problem
// getters/setters...
}
는 예외를 준다. 나는 Long
에 count
을 변경하지만 난 그게 여러 다른 장소이다 사용되는 뷰 모델 클래스를 변경하지 않으려한다면
org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of FooCount.count
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:119)
--snip--
Caused by: java.lang.IllegalArgumentException: argument type mismatch
그것은 작동합니다.
나는 어느 쪽 Integer
어떻게 든 또는이 결과 변압기 Long
에서 Integer
로 변환 할 Projections.count()
수익을 만들 수 있습니까?
아 화려한를 변경 포함되지 않은 방법을 기대했다 : 그래서 도움이 될 수 있습니다 정수의 교체. 실제 코드가 게시 한 SSCCE보다 더 복잡하기 때문에 현재 솔루션보다 훨씬 뛰어납니다. 이렇게하면 훨씬 단순화 할 수 있습니다. 감사. – Zutty