0

我想执行 Hibernate 查询以获取组内“协调员”的数量。“协调员”具有类似管理员的组角色。

在更高的层次上,我有两个表:domaingroup 和 group_coordinators。后一个表有 2 列:coordinators_id 和 domaingroup_id。我想检查特定用户(显示在 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

你有两个大错误: 你必须在 HQL 查询中使用 Java 类和成员名,而不是表名。然后你不能从java集合中选择;相反,您必须指定类。

在您的示例中,它将是某事。喜欢

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 回答