0
私は3つのテーブルを持つデータベースを持っています。特定の値を持つ別のエンティティと結合されているエンティティのクエリ?
特定の言語の記事の詳細がある場合のみ、データベースから記事を取得する必要があります。今日、私は、ネイティブのMySQLのクエリをcoalesceを使用して、それは正常に動作します。しかし今、私はEJB3でも同じことをしたいと思います。私はいろいろなことを試みましたが、これまでに失敗しました。私はEJB3のエンティティでの作業に慣れていないので、誰かがここで正しい軌道に乗るのを助けてくれたら、私はそれを感謝します。
Integer id = 543; // id of an article
Integer languageId = 2; // id of a language
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Article> cq = cb.createQuery(Article.class);
Root<Article> article = cq.from(Article.class);
Join<Article, ArticleDetail> details = article.join(Article_.articleDetailList);
// I think this is where I go wrong
cq.where(article.get(Article_.id).in(id)).where(details.get(ArticleDetail_.languageId).in(languageId));
TypedQuery<Article> q = em.createQuery(cq);
Article result = (Article) q.getSingleResult();
return result;