hibernate
Criterias and Projections
수색…
제한 사항을 사용하여 목록
City 이름이 "title"인 TravelReview 테이블이 있다고 가정합니다.
Criteria criteria =
session.createCriteria(TravelReview.class);
List review =
criteria.add(Restrictions.eq("title", "Mumbai")).list();
System.out.println("Using equals: " + review);
기준에 다음과 같이 연결하여 제한을 추가 할 수 있습니다.
List reviews = session.createCriteria(TravelReview.class)
.add(Restrictions.eq("author", "John Jones"))
.add(Restrictions.between("date",fromDate,toDate))
.add(Restrictions.ne("title","New York")).list();
투영법 사용하기
컬럼을 몇 개만 가져 오려면 Projections 클래스를 사용할 수 있습니다. 예를 들어, 다음 코드는 title 열을 검색합니다.
// Selecting all title columns
List review = session.createCriteria(TravelReview.class)
.setProjection(Projections.property("title"))
.list();
// Getting row count
review = session.createCriteria(TravelReview.class)
.setProjection(Projections.rowCount())
.list();
// Fetching number of titles
review = session.createCriteria(TravelReview.class)
.setProjection(Projections.count("title"))
.list();
필터 사용
@Filter
는 WHERE
캠프로 사용됩니다. 여기에 몇 가지 예가 있습니다.
학생 실체
@Entity
@Table(name = "Student")
public class Student
{
/*...*/
@OneToMany
@Filter(name = "active", condition = "EXISTS(SELECT * FROM Study s WHERE state = true and s.id = study_id)")
Set<StudentStudy> studies;
/* getters and setters methods */
}
학습 실체
@Entity
@Table(name = "Study")
@FilterDef(name = "active")
@Filter(name = "active", condition="state = true")
public class Study
{
/*...*/
@OneToMany
Set<StudentStudy> students;
@Field
boolean state;
/* getters and setters methods */
}
StudentStudy Entity
@Entity
@Table(name = "StudentStudy")
@Filter(name = "active", condition = "EXISTS(SELECT * FROM Study s WHERE state = true and s.id = study_id)")
public class StudentStudy
{
/*...*/
@ManytoOne
Student student;
@ManytoOne
Study study;
/* getters and setters methods */
}
이렇게하면 "활성"필터가 활성화 될 때마다,
- 학생 단체에서하는 모든 질문은 모든 학생에게 state = true
연구 만 반환 state = true
- 우리가 연구 기관에서하는 모든 질문은 모든 state = true
연구를 반환 state = true
우리가 StudentStudy의 entiy에서 할 -Every 쿼리는 만 사람을 반환합니다 state = true
연구 관계
Pls는 study_id가 SQL StudentStudy 테이블의 필드 이름임을 참고합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow