programing

이전 버전의 휴지 상태(~2009)를 사용하여 행을 카운트하려면 어떻게 해야 합니까?

bestcode 2022. 8. 11. 23:01
반응형

이전 버전의 휴지 상태(~2009)를 사용하여 행을 카운트하려면 어떻게 해야 합니까?

예를 들어, 테이블 북이 있는 경우 최대 절전 모드가 있는 총 북 레코드 수는 어떻게 계산합니까?

이전 버전의 휴지 상태(<5.2)의 경우:

클래스 이름이 Book인 경우:

return (Number) session.createCriteria("Book")
                  .setProjection(Projections.rowCount())
                  .uniqueResult();

적어도 a다.Number, 대부분의 경우Long.

자바에서는 보통 int를 반환하고 다음 양식을 사용해야 합니다.

int count = ((Long)getSession().createQuery("select count(*) from Book").uniqueResult()).intValue();

동면 인 공식 의사가 이에 대해 알려준 내용은 다음과 같습니다.

쿼리 결과 수를 반환하지 않고 셀 수 있습니다.

( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()

하지만 항상 돌아오는 것은 아닙니다.Integerinstance를 사용하는 것이 좋습니다.java.lang.Number안전을 위해서.

시도해 보세요.count(*)

Integer count = (Integer) session.createQuery("select count(*) from Books").uniqueResult();

어디에Books이름에서 따온 것입니다.class- 데이터베이스의 테이블이 아닙니다.

휴지 상태 5+를 사용하는 경우 쿼리는 다음과 같이 수정됩니다.

Long count = session.createQuery("select count(1) from  Book")
                    .getSingleResult();

또는 TypedQuery가 필요한 경우

Long count = session.createQuery("select count(1) from  Book",Long.class)
                        .getSingleResult();
Long count = (Long) session.createQuery("select count(*) from  Book").uniqueResult();

이것은, 휴지 상태 4(테스트 완료)로 동작합니다.

String hql="select count(*) from  Book";
Query query= getCurrentSession().createQuery(hql);
Long count=(Long) query.uniqueResult();
return count;

여기서 getCurrentSession()은 다음과 같습니다.

@Autowired
private SessionFactory sessionFactory;


private Session getCurrentSession(){
return sessionFactory.getCurrentSession();
}

매우 간단합니다. 다음 JPQL 쿼리를 실행하면 됩니다.

int count = (
(Number)
    entityManager
    .createQuery(
        "select count(b) " +
        "from Book b")
    .getSingleResult()
).intValue();

저희가 섭외하는 이유는Number일부 데이터베이스가 복구될 것이라는 점입니다.Long다른 사람들이 돌아올 때BigInteger휴대성을 위해서, 캐스트에 캐스트 하는 것이 좋습니다.Number또,int또는long카운트될 것으로 예상되는 행 수에 따라 달라집니다.

언급URL : https://stackoverflow.com/questions/1372317/how-do-we-count-rows-using-older-versions-of-hibernate-2009

반응형