27 Haziran 2018 Çarşamba

JPA TypedQuery Arayüzü

Giriş
Şu satırı dahil ederiz.
import javax.persistence.TypedQuery;
JPA Query arayüzünden kalıtır. Açıklaması şöyle.
TypedQuery gives you an option to mention the type of entity when you create a query and therefore any operation thereafter does not need an explicit cast to the intended type. Whereas the normal Query API does not return the exact type of Object you expect and you need to cast.
constructor
Şöyle yaparız.
CriteriaQuery<Customer> select = ...;

TypedQuery<Customer> typedQuery = entityManager.createQuery(select);
getResult metodu
Şöyle yaparız.
String hql = "select count(me.grp) from  MyEntity me group by grp";
TypedQuery<Integer> query = entityManager.createQuery(hql, Integer.class);
List<Integer> result = query.getResult();
getResultList metodu
Şöyle yaparız.
TypedQuery<SimpleEntity> q = 
        em.createQuery("select t from SimpleEntity t", SimpleEntity.class);

List<SimpleEntity> listOfSimpleEntities = q.getResultList();
for (SimpleEntity entity : listOfSimpleEntities) {
    // do something useful with entity;
}
setFirstResult metodu
Örnek
page sayacı 0'dan başlıyorsa şöyle yaparız.
public List<Customer> getByCompany(Long id, int page, int size) {
  ...
  TypedQuery<Customer> typedQuery = ...;

  typedQuery.setFirstResult(page * size);
  typedQuery.setMaxResults(page);

  return typedQuery.getResultList();
}
Örnek
page sayacı 1'den başlıyorsa şöyle yaparız.
typedQuery.setFirstResult((page * perPage) - perPage);
setMaxResults metodu
Şöyle yaparız.
int size = ...;

TypedQuery<Customer> typedQuery = ...;

typedQuery.setMaxResults(page);

Hiç yorum yok:

Yorum Gönder