26 Haziran 2018 Salı

Query Arayüzü - Kullanmayın

Giriş
Şu satırı dahil ederiz.
import org.hibernate.Query;
Bu arayüz deprecate edildi.

constructor - Hibernate Session
Bu sınıf Hibernate Session sınıfı tarafından yaratılır.

constructor - EntityManager
Eğer JPA kullanıyorsak şöyle yaparız.
entityManager.createNativeQuery("...")
  .unwrap(org.hibernate.Query.class)
  .setParameter("number", new Integer(number))
  .setParameter("userId", userId)
  .setParameter("startDate", startDate)
  .setParameter("endDate", endDate)
  .setResultTransformer(new MyClassTransformer())
  .list();
list metodu
Örnek
Şöyle yaparız.
@Autowired
SessionFactory sessionFactory;

public List<MyEntity> findSomeApples() {
  Session session = sessionFactory.getCurrentSession();
  List<?> result = session.createQuery("from MyEntity where apples=7")
      .list();
  @SuppressWarnings("unchecked")
  List<MyEntity> resultCasted = (List<MyEntity>) result;
  return resultCasted;
}
lockMode metodu
İmzası şöyle
Query.lockMode (String alis,LockMode lockMode);
scroll metodu
Şöyle yaparız.
ScrollableResults results = query.scroll(ScrollMode.FORWARD_ONLY);
setFetchSize metodu
Şöyle yaparız.
query.setFetchSize(Integer.MIN_VALUE);
setParameter metodu
Eğer native query kullanıyorsak named parameter (:myparameter) kullanılmaz. Bunun yerine (?myparameter) kullanılır.

Örnek
Şöyle yaparız.
String email = ...;
Query query = ...;
query.setParameter("email", email);
Örnek
Şöyle yaparız.
String sql="select * from PunchHistory where punchDate = :date1"

List<PunchHistory> results = 
  session.createQuery(StackperksConstants.sql)
  .setParameter("date1", java.sql.Date.valueOf(date), TemporalType.TIMESTAM)
  .list();
setParameterList metodu
Her parametre için çağırmak gerkir. Şöyle yaparız.
session.createQuery("select cat from Cat cat where cat.id in (:ids)")
  .setParameterList("ids", new Long[]{1,2,3,4,5})
setReadOnly metodu
Şöyle yaparız.
query.setReadOnly(true);

Hiç yorum yok:

Yorum Gönder