0

グループ内の「コーディネーター」の数を取得するためにHibernateクエリを実行したいと思います。「コーディネーター」には、グループの管理者のような役割があります。

より高いレベルでは、domaingroupとgroup_coordinatorsの2つのテーブルがあります。後者のテーブルには、coordinators_idとdomaingroup_idの2つの列があります。特定のユーザー(coordinators_idに表示)とグループ(domaingroup_idに表示)の行数を確認したいと思います。

エラーが発生します、

java.lang.IllegalArgumentException:org.hibernate.hql.ast.QuerySyntaxException:DomainGroup.Group_Coordinatorsが\マップされていません

クエリの場合、

SELECT Coordinators_Id=:followerId FROM DomainGroup.Group_Coordinators 
WHERE Coordinators_Id=:followerId and DomainGroup_id=:followingId

コードについては、

 class DomainGroup ... {

                /**
                 * List of coordinators for this group.
                 */
                @Size(min = 1, message = MIN_COORDINATORS_MESSAGE)
                @ManyToMany(fetch = FetchType.EAGER, cascade = 
        { CascadeType.PERSIST })
                @JoinTable(name = "Group_Coordinators")
                private Set<Person> coordinators;

このクエリを正しく実行する方法を教えてください。

ありがとう、ケビン

4

1 に答える 1

1

2つの大きな間違いがあります。最初は、テーブル名ではなく、HQLクエリでJavaクラスとメンバーの名前を使用する必要があります。そして、Javaセットから選択することはできません。代わりに、クラスを指定する必要があります。

あなたの例では、それはsthになります。お気に入り

FROM Person WHERE Id=:followerId and DomainGroupId=:followingId

また

SELECT count(Id) FROM Person WHERE DomainGroupId=:followingId

(あなたが提供しなかったクラスPersonにあると私が推測する例では、マップされたメンバー変数IdとDomainGroupIdがあります)

于 2012-10-25T16:28:56.813 に答える