查看您的查询草图,我认为它不会返回任何结果。我把它改成了意思name in ('<category1>','<category2>', ...)
。这可能与您的情况不符。
这假定您已在您的类上正确设置映射以使 JPA 工作。例如
class PostCategory {
private String name;
private Post post;
...
@ManyToOne
public Post getPost() {
return post;
}
...
在这种情况下,您的 DAO 代码将类似于此(给定 List nameValues 对象)
// Set up the subquery
DetachedCriteria dc = DetachedCriteria.forClass(PostCategory.class)
.setProjection(Projections.property("post.id"))
.add(Restrictions.in("name", nameValues));
Criteria crit = session.createCriteria(Post.class)
.add(Subqueries.eqProperty("id", dc));
但是,如果您想要一个包含所有类别的 Post 对象列表,那么您需要为每个类别创建一个单独的 DetachedCriteria 实例,并将每个对象添加为 AND 的子查询。