クエリ スケッチを見ると、結果は返されないと思います。という意味に変えました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 されたサブクエリとして追加する必要があります。