28 Ocak 2021 Perşembe

JPA EntityManager.createQuery metodu

Giriş
2 tip createQuery() metodu var. Birisi Query nesnesi dönüyor, diğeri ise TypedQuery dönüyor.
 
createQuery metodu - CriteriaQuery
JPQL kullanır. CriteriaQuery<T> nesnesi olduğu için TypedQuery döndürür.
Örnek
Şöyle yaparız.
CriteriaQuery<UserDTO> cq = ...;
...
TypedQuery<UserDTO> query = em.createQuery(cq);
Örnek
Şöyle yaparız.
CriteriaQuery<Long> sc = ...;
...
Long count = em.createQuery(sc).getSingleResult();
createQuery metodu - String
JPQL kullanır. Bir Query nesnesi döner. Dışarından alınacak parametreler ":" karakteri ile başlayan değişkenlerle belirlenir. Bu değişkenlere değerleri setParameter() metodu ile atanır.
Örnek
Şöyle yaparız.
Query q = em.createQuery("SELECT s FROM Status s WHERE s.statusName =:status");
Örnek
Şöyle yaparız.
em.createQuery("select gne from Entity gne where type(gne) = :subclass")
  .setParameter("subclass", GivenNameEntity.class)
  .getResultList();
Örnek
Şöyle yaparız.
String sql = "select r from Rent r JOIN FETCH r.rentables where r.id = :rid";
Query queryString =  em.createQuery(sql)
    .setParameter("rid", rent.getId());
List<Rent> resultList = queryString.getResultList();
createQuery metodu - String + Class
İkinci parametre T tipi olduğu için TypedQuery döndürür.TypedQuery yazısına taşıdım.

Hiç yorum yok:

Yorum Gönder