9 Ekim 2018 Salı

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 - String + Class
Örnek
İkinci parametre T tipi olduğu için TypedQuery döndürür.
Örnek
Şö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();
constructor - CriteriaQuery
Örnek
Şö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