Hibernate 에서 createCriteria 즉 QBC 조회 의 상세 한 용법
텅 비다 is null Expression. isNull () 이 비어 있 지 않 음 is notnull Expression. is NotNull () 지정 한 범위 내 에서 betweenand Expression. between () 은 지정 한 범위 에 있 지 않 습 니 다. not betweenand Expression. not (Expression. between () 는 집합 에 속 합 니 다. in Expression. in () 은 집합 에 속 하지 않 습 니 다. notin Expression. not (Expression. in () 과 and Expression. and () 또는 or Expression. or () 비 not Expression. not () 모호 조회 like Expression.like
1. Criteria 인 스 턴 스 net. sf. hibenate. Criteria 인 터 페 이 스 를 만 드 는 것 은 특정한 지구 화 류 에 대한 조 회 를 대표 합 니 다.세 션 은 Criteria 인 스 턴 스 를 만 드 는 공장 입 니 다.
Criteria crit = sess.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();
2. 결과 집합 범 위 를 축소 하 는 조회 조건 (Criterion) 은 net. sf. hibenate. expression. Criterion 인터페이스의 인 스 턴 스 입 니 다.클래스 net. sf. hibenate. expression. Expression 은 내 장 된 Criterion 형식 을 정의 합 니 다.
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "Fritz%") )
.add( Expression.between("weight", minWeight, maxWeight))
.list();
표현 식 (Expressions) 은 논리 적 으로 그룹 을 나 눌 수 있 습 니 다.
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "Fritz%") )
.add( Expression.or( Expression.eq( "age", new Integer(0) ), Expression.isNull("age")))
.list();
List cats = sess.createCriteria(Cat.class)
.add( Expression.in( "name",new String[]{"Fritz","Izi","Pk"}))
.add( Expression.disjunction()
.add( Expression.isNull("age") )
.add( Expression.eq("age", new Integer(0) ) )
.add( Expression.eq("age", new Integer(1) ) )
.add( Expression.eq("age", new Integer(2) ) ) ) )
.list();
미리 제 작 된 조건 유형 이 많 습 니 다 (Expression 의 하위 클래스).SQL 에 직접 삽입 할 수 있 는 아주 유용 한 것 이 있 습 니 다.
List cats = sess.createCriteria(Cat.class)
.add( Expression.sql("lower($alias.name) like lower(?)", "Fritz%", Hibernate.STRING))
.list();
{alias} 은 검색 한 실체의 줄 별명 으로 대 체 됩 니 다.(원문: {alias} 위치 지정자 가 쿼 리 된 엔 터 티 의 행 별칭 으로 대 체 됩 니 다.)
3. 결과 정렬 은 net. sf. hibenate. expression. Order 를 사용 하여 결과 집합 을 정렬 할 수 있 습 니 다.
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "F%")
.addOrder( Order.asc("name"))
.addOrder( Order.desc("age"))
.setMaxResults(50)
.list();
4. 관련 (Associations) 은 관련 사이 에 createCriteria () 를 사용 하여 관계 가 있 는 실체 간 에 제약 을 쉽게 지정 할 수 있 습 니 다.
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "F%")
.createCriteria("kittens")
.add( Expression.like("name","F%")
.list();
두 번 째 createCriteria () 는 criteria 의 새로운 인 스 턴 스 를 되 돌려 kittens 집합 류 의 요 소 를 가리 키 고 있 습 니 다. 아래 의 대체 형식 은 특정 상황 에서 유용 합 니 다.
List cats = sess.createCriteria(Cat.class)
.createAlias("kittens", "kt")
.createAlias("mate", "mt")
.add(Expression.eqProperty("kt.name", "mt.name"))
.list();
(createAlias ()) 는 Criteria 의 새로운 인 스 턴 스 를 만 들 지 않 습 니 다.) 앞의 두 검색 에서 Cat 인 스 턴 스 가 가지 고 있 는 kittens 집합 류 는 criteria 를 통 해 미리 걸 러 지지 않 았 습 니 다. 조건 에 맞 는 kittens 만 되 돌아 가 려 면 returnMaps () 를 사용 해 야 합 니 다.
List cats = sess.createCriteria(Cat.class)
.createCriteria("kittens", "kt")
.add( Expression.eq("name", "F%") )
.returnMaps()
.list();
Iterator iter = cats.iterator();
while ( iter.hasNext())
{
Map map = (Map) iter.next();
Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);
Cat kitten = (Cat) map.get("kt");
}
5. 동적 관련 대상 가 져 오기 (Dynamic association fetching) 는 실행 할 때 setFetchMode () 를 통 해 관련 대상 이 자동 으로 가 져 오 는 정책 을 변경 할 수 있 습 니 다.
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "Fritz%") )
.setFetchMode("mate", FetchMode.EAGER)
.list();
이 조 회 는 외부 연결 (outer join) 을 통 해 mate 와 kittens 를 동시에 얻 을 수 있 습 니 다.
6. 예제 조회 (Example query) net. sf. hibenate. expression. Example 류 에 따라 지정 한 인 스 턴 스 에서 조회 조건 을 만 들 수 있 습 니 다.
Cat cat = new Cat();
cat.setSex('F');
cat.setColor(Color.BLACK);
List results = session.createCriteria(Cat.class)
.add( Example.create(cat) )
.list();
버 전 속성 은 문자 속성 과 관련 성 을 무시 합 니 다. 기본적으로 null 값 의 속성 도 제 외 됩 니 다. You can adjust how the Example is applied.
예제 (Example) 를 어떻게 적용 하 는 지 조정 합 니 다. Example example = Example. create (cat). excludeZeroes () / exclude zero valued properties
.excludeProperty("color") //exclude the property named "color" .ignoreCase() //perform case insensitive string comparisons
.enableLike(); //use like for string comparisons
List results = session.createCriteria(Cat.class)
.add(example)
.list();
관련 대상 에 대해 예제 로 criteria 를 만 들 수도 있 습 니 다. List results = session. createCriteria (Cat. class). add (Example. create (cat))
.createCriteria("mate") .add(Example.create(cat.getMate())) .list();
참조 코드 는 다음 과 같 습 니 다.
String[] aa = new String[2];
List results = getSession().createCriteria(
"base.database.entity.Menu")
.add(Example.create(instance))
.add(Restrictions.between("date",new Date(),new Date()))
.add(Restrictions.or(Expression.eq("flg", "S"), Expression.eq("FLG", "D")))
.add(Restrictions.in("flg", aa))
.addOrder(Order.asc("menuOrder"))
.list();
add(Projections.groupProperty("color"))
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) (왜 LAZY 로딩을 써야할까?) (1)Proxy는 이 글의 주제인 즉시로딩과 지연로딩을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시로딩과 지연로딩이 무엇인지에 대해 먼저 알아보자. 눈 여겨 볼 곳은 'fetch = FetchType.EAGER...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.