1. ホーム
  2. java

[解決済み] HQL ERROR。結合にパスが必要です

2022-02-09 13:41:10

質問

このクエリのバリエーションを試しているのですが、どうしても実現できません。 この記事も参考にさせていただきました。 Joinに期待されるパス! Nhibernate Error という質問に対して、同じロジックを私のクエリに適用することができないようです。 私の User オブジェクトには UserGroup コレクションを作成します。

クエリがオブジェクト内のエンティティを参照する必要があることは理解していますが、私が見ている限りでは、私は...

@NamedQuery(
  name = "User.findByGroupId",
  query =
    "SELECT u FROM UserGroup ug " +
    "INNER JOIN User u WHERE ug.group_id = :groupId ORDER BY u.lastname"
)

解決方法は?

select u from UserGroup ug inner join ug.user u 
where ug.group_id = :groupId 
order by u.lastname

名前付きクエリとして

@NamedQuery(
  name = "User.findByGroupId",
  query =
    "SELECT u FROM UserGroup ug " +
    "INNER JOIN ug.user u WHERE ug.group_id = :groupId ORDER BY u.lastname"
)

HQLステートメントで、あるエンティティから他のエンティティへのパスを使用します。を参照してください。 HQLとjoinに関するHibernateのドキュメント を参照してください。