JPA'da yeniyim ve genel bir JPA DAO uygulamak istiyorum ve sayfalandırma uygulamak için bir sorgu sonucunun satır sayısını bulmak gerekiyor. Web'de arama yaptıktan sonra, bunu yapmanın pratik bir yolunu bulamıyorum. join
kullanırkenGenel bir JPA DAO'da JPA 2 Kriteri Sorgusunun satır sayısı nasıl sayılır?
public <T> Long findCountByCriteria(CriteriaQuery<?> criteria) {
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Long> countCriteria = builder.createQuery(Long.class);
Root<?> entityRoot = countCriteria.from(criteria.getResultType());
countCriteria.select(builder.count(entityRoot));
countCriteria.where(criteria.getRestriction());
return em.createQuery(countCriteria).getSingleResult();
}
Ancak bu kod çalışmaz: Burada birçok makalelerinde öne koddur. JPA Ölçüt API'sini kullanarak bir sorgu sonucu kümesinin satırlarını saymanın bir yolu var mı? GÜNCELLEME
: Burada CriteriaQuery oluşturmak kodudur:
CriteriaQuery<T> queryDefinition = criteriaBuilder.createQuery(this.entityClass);
Root<T> root = queryDefinition.from(this.entityClass);
ve bazı sorgu idam edilene kadar köküne eklenebilir katılır:
public Predicate addPredicate(Root<T> root) {
Predicate predicate = getEntityManager().getCriteriaBuilder().ge(root.join(Entity_.someList).get("id"), 13);
return predicate;
}
ve oluşturulan istisna gibi:
org.hibernate.hql.ast.QuerySyntaxException: Geçersiz yol: 'generatedAlias1.id [entity.Entity den generatedAlias0 sıra seçimi sayısı (generatedAlias0) (generatedAlias0.id> = 13L) ve ( (generatedAlias1.id < = 34L))]
olan generatedAlias1 gerektiği Varlık üzerinde olmalı ve generateAlias0 üzerinde katıldığım dernek üzerinde olmalıdır. Düzgün uyguladığınıza dikkat edin çünkü sayım sorgusu olmadan sorguyu çalıştırdığımda hata olmadan çalışır ve Birleştir düzgün çalışır ancak sayım sorgusunu çalıştırmayı denediğimde istisna atar.
Kriteri nasıl güncellediniz? CriteriaQuery > ölçüt – perissf
@perissf Gönderiyi güncelledim mi? – stacker
Benzer sorunlara başka yanıtları gözden geçirin: http://stackoverflow.com/questions/9001289/jpa-hibernate-criteriabuilder-how-to-create-query-using-relationship-object/9002225#9002225 ve http: // stackoverflow.com/questions/9025196/how-to-use-jpa-criteria-api-when-joining-many-tables/9025656#9025656 – perissf