Hibernate Jpa Criteria쿼리

less than 1 minute read

도메인 구조

class Tag { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id;

private boolean enabled; @Column(length = 50, unique = true) private String name; private String description; }

도메인 구조는 동일하다. 하이버네이트 전용 어노테이션이나 스프링Data전용 어노테이션 등등이 있긴한데… 여기저기서 JPA걸쓰면 다 먹히니까 특별한 용도가 아니면 JPA어노테이션을 사용하는게 좋다.

Jpa 쿼리

Tag category = new Tag(); String keyword = “name”;

CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(); Root e = cq.from(category.getClass()); cq.select(e); if(keyword!=null && !keyword.isEmpty()){ //ParameterExpression param = cb.parameter(String.class, keyword); cq.where(cb.like(e.get(“name”), keyword+”%”)); } //Query query = entityManager.createQuery(cq); //return query.getResultList(); TypedQuery query = entityManager.createQuery(cq); List list = query.getResultList(); System.out.println(list);

JPA는 이런느낌.. 뭐 다를게 없는데 구조가 살짝 다르다.

하이버네이트

아 이건..DetachedCriteria가지고 했었는데 기억이 잘 안난다. 테스트코드 만든후에..