9 Ekim 2018 Salı

JPA TypedQuery Arayüzü

Giriş
Şu satırı dahil ederiz.
import javax.persistence.TypedQuery;
constructor - JQL + 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
Tek sütunlu bir sonuç 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();
getResultList metodu
Çok sütunlu bir sonuç döndürür.
Örnek
Şö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;
}
Örnek
Şöyle yaparız
entityManager.getTransaction().begin(); 

TypedQuery<User> query = entityManager.createQuery("SELECT u FROM User u", User.class); 
List<User> users = query.getResultList(); 

entityManager.getTransaction().commit(); 
entityManager.close(); 
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);
setParameter metodu
Örnek
Şöyle yaparız
String GET_EMPLOYEE_BY_YEARS_OF_EXPERIENCE = "SELECT employee FROM Employee employee WHERE
experienceInYears=?1"
;

@Transactional
public List<Employee> getEmployeeByYearsOfExperience(int years) {
  List<Employee> employees = new ArrayList<>()
  
  TypedQuery<Employee> getQueryByYear = entityManager
    .createQuery(GET_EMPLOYEE_BY_YEARS_OF_EXPERIENCE,Employee.class)
    .setParameter(1, years);
  
  employees = getQueryByYear.getResultList();
  return employees;
}

Hiç yorum yok:

Yorum Gönder