1
我有一個類Person,每個人都可以擁有特定語言的文檔。 Person和Document類與多對多關係相關聯。休眠多對多關係查詢
我的Java代碼如下所示:
@Table(name="person")
public class Person {
@Id
@Column(name="id")
private Long id;
@Column(name="name")
private String name;
@ManyToMany(targetEntity=Document.class)
@JoinTable(name="person_document",
joinColumns={
@JoinColumn(name="person_id")
},
inverseJoinColumns={
@JoinColumn(name="document_id")
}
)
private List<Document> documents;
// getter and setter ....
}
public class Document {
@Id
@Column(name="id")
private Long id;
@Column(name="language")
private String language;
// getter and setter ...
}
注:我使用的是Hibernate 3的位置。
我想創建一個查詢,讓我回到所有人只有在一個特定的語言,如英語文件。
我第一次嘗試下面的代碼
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.createCriteria(Person.class)
.createAlias("documents", "d")
.add(Restrictions.eq("d.language", "english")
.list();
該代碼清單究竟是誰在英語但我希望所有的人,但只有在英國每個人的文檔文件的人。
例如:
- 人A在英語
- 人員B原稿X具有文件中的Y法語和英語(2個文件實際上)
- 人C具有在法國 文件ž
我想獲得上市:
- 一個人用英語
- 某乙原稿X與文檔的Y英文
- 一個人沒有文件
這是否有意義?如果是這樣的話,Hibernate查詢如查詢如何。
因爲這真的很難得到我在想這是做錯的方法,但我不知道有任何其他的方式來做到這一點。
我感謝您的幫助!