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查询如查询如何。
因为这真的很难得到我在想这是做错的方法,但我不知道有任何其他的方式来做到这一点。
我感谢您的帮助!