HibernateTemplate 는 조건 을 만족 시 키 는 기록 총 수 를 Example 방식 으로 조회 합 니 다.
그러나 Hibernate 는 countByExample()과 유사 한 방법 을 제공 하지 않 았 다.일반적인 방법 은 Query 가 스스로 조건 을 쓰 는 것 이다.자바 빈 의 속성 이 많 고 어떤 속성 이 null 인지 확실 하지 않 으 면 비참 하 다.나 는 findByExample()방법 을 살 펴 보 았 는데,완전히 모방 하여 다음 과 같은 새로운 방법 을 쓸 수 있 음 을 발견 하 였 다.
다른 방법 이 있 을 지 모 르 겠 지만 저 는 아직 Spring 에 익숙 하지 않 으 니 아 쉬 운 대로 사용 하 겠 습 니 다.
public int countByExample(final Object entityBean) {
Assert.notNull(entityBean, "Example entity must not be null");
return (Integer) getHibernateTemplate().executeWithNativeSession(new HibernateCallback() {
public Object doInHibernate(Session s) throws HibernateException, SQLException {
// Criteria, Hibernate
Criteria criteria = s.createCriteria(entityBean.getClass())
.setProjection(Projections.projectionList()
.add(Projections.rowCount()))
.add(Example.create(entityBean));
// HibernateTemplate prepareCriteria , protected,
// ,
if (getHibernateTemplate().isCacheQueries()) {
criteria.setCacheable(true);
if (getHibernateTemplate().getQueryCacheRegion() != null)
criteria.setCacheRegion(getHibernateTemplate().getQueryCacheRegion());
}
if (getHibernateTemplate().getFetchSize() > 0)
criteria.setFetchSize(getHibernateTemplate().getFetchSize());
if (getHibernateTemplate().getMaxResults() > 0)
criteria.setMaxResults(getHibernateTemplate().getMaxResults());
SessionFactoryUtils.applyTransactionTimeout(criteria, getSessionFactory());
return criteria.uniqueResult();
}
});
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.