4 Mart 2020 Çarşamba

JPA CriteriaBuilder Kullanımı

Equal Sorgusu Kullanımı
1. CriteriaBuilder.createQuery() ile CriteriaQuery nesnesi yarat
2.  CriteriaQuery.from () ile Root nesne yarat
3. CriteriaBuilder.parameter() ile ParameterExpression yarat
4. CriteriaBuilder.equal(root.get(...),ParameterExpression) ile predicate yarat.
5. CriteriaQuery nesnesinin where koşulunu predicate  ile doldur

Şöyle yaparız
String myUserInput;

@PersistenceContext
public EntityManager mainEntityManagerFactory;

CriteriaBuilder builder = mainEntityManagerFactory.getCriteriaBuilder();

CriteriaQuery<DomainObject> query = builder.createQuery(DomainObject.class);

// create Criteria
Root<ConfigurationDO> root = query.from(DomainObject.class);

//Criteria SQL Parameters
ParameterExpression<String> paramKey = builder.parameter(String.class);

query.where(builder.equal(root.get("name"), paramKey);

// wire queries together with parameters
TypedQuery<ConfigurationDO> result = mainEntityManagerFactory.createQuery(query);

result.setParameter(paramKey, myUserInput);
DomainObject entry = result.getSingleResult();
Like Sorgusu Kullanımı
Örnek burada

1. CriteriaBuilder.createQuery() ile CriteriaQuery nesnesi yarat

2.  CriteriaQuery.from () ile Root nesne yarat

3. CriteriaBuilder.like(root.get(...),ParameterExpression) ile predicate yarat.
Root root = criteriaQuery.from(/*The class youre searching*/);
Predicate predicate = criteriaBuilder.like(root.<String>get(/*field name*/), /*search values*/);

5. CriteriaQuery nesnesinin where koşulunu predicate  ile doldur
criteriaQuery.where(predicate);
criteriaQuery.select(root);
TypedQuery query = entityManager.createQuery(criteriaQuery);
List<T> result = query.getResultList();

Select Sorgusu Kullanımı
1. CriteriaBuilder.createQuery() ile CriteriaQuery nesnesi yarat
2.  CriteriaQuery.from () ile Root nesne yarat
3.  Root nesne ile predicate yarat.
4. CriteriaQuery.select (root).where(cb.X());
şeklinde sorgu yap.



Hiç yorum yok:

Yorum Gönder