2017-09-03 6 views
0

が、私はこのコードHibernate5:レコードカウントクエリにルート<Long>を取得する方法は?

final Session session = sessionFactory.getCurrentSession(); 
final CriteriaBuilder builder = sessionFactory.getCriteriaBuilder(); 
final CriteriaQuery<ListingDetailBaseDto> criteria = builder.createQuery(ListingDetailBaseDto.class); 
final Root<ListingDetailBaseDto> root = criteria.from(ListingDetailBaseDto.class); 

...

public int countRecords() { 
    final CriteriaQuery<Long> countingQuery = builder.createQuery(Long.class); 
    countingQuery.select(countingQuery.from(Long.class)); 
    countingQuery.select(builder.count(root)); 
    final Query<Long> query = session.createQuery(countingQuery); 
    return query.getSingleResult().intValue(); 
}  

を持っているそれは長いが有効なエンティティではありませんと言います。だから私はライン3、

public int countRecords() { 
    final CriteriaQuery<Long> countingQuery = builder.createQuery(Long.class); 
    countingQuery.select(builder.count(root)); 
    final Query<Long> query = session.createQuery(countingQuery); 
    return query.getSingleResult().intValue(); 
} 

削除してから、エラーは次のようになります。No criteria query roots were specified

私はこの単純なレコード数を取得できますか?

+0

「ルート」をどのように定義しますか? –

+0

質問に追加 –

答えて

0

約についてお問い合わせいただきありがとうございます。私はコードのその部分をもう少し詳しく見てきました。

この問題は、異なるCriteriaQueryオブジェクトのrootを使用することによって発生しました。

固定コード:

public int countRecords() { 
    final CriteriaQuery<Long> countingQuery = builder.createQuery(Long.class); 
    countingQuery.select(builder.count(countingQuery.from(ListingDetailBaseDto.class))); 
    final Query<Long> query = session.createQuery(countingQuery); 
    return query.getSingleResult().intValue(); 
}  
+0

あなたがそれを見つけたことをうれしく思ったので、あなたはあなたの答えを受け入れることができます! –

0

ちょっとオフトピックが、私たちはそんなに立派芋、休止状態に不時着。

class ListingDetailsDao extends JdbcDaoSupport { 

    public ListingDetailsDao (@Autowired @Qualifier("myDataSource") DataSource dataSource) { 

     setDataSource(dataSource); 
    } 

    public int count() { 

     final String sql = "select count (*) from listing_details"; 
     return getJdbcTemplate().queryForObject(sql, Integer.class); 
    } 
関連する問題