hibernate
基準と予測
サーチ…
制限を使用したリスト
Cityという名前のTravelReviewテーブルが "title"という列であると仮定すると、
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
@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
研究を返す
- StudentStudy entiyで行うすべてのクエリは、 state = true
もののみを返します。Study relationship
Plsは、study_idがsql StudentStudyテーブルのフィールドの名前であることに注意してください
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow