Java 错误的hql查询

Java 错误的hql查询,java,mysql,sql,hibernate,hql,Java,Mysql,Sql,Hibernate,Hql,我有以下实体: @Entity public class Item { @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid2") private String id; @ManyToOne private User ownerUser; @ManyToMany private Set<User> grantedUsers;

我有以下实体:

@Entity
public class Item {

@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
private String id;

@ManyToOne
private User ownerUser;

@ManyToMany
private Set<User> grantedUsers;
我看到错误消息:

[2014-07-21 15:07:31] d.grantedUsers is not mapped [select Item from com.test.Item d, d.grantedUsers u where ownerUser.id= :id or u.id =:id]
实体映射到hibernate/spring
*.xml
文件中


怎么了?

从项目d、d.grantedUsers u中选择项目,其中ownerUser.id=:id或u.id=:id

这个问题对我来说似乎很奇怪。我打赌
Hibernate
会尝试将
from
子句中的
d.grantedUsers
作为实体类进行威胁(未映射)。试试看:


从项目d中选择d,其中ownerUser.id=:id或d.grantedUsers.id=:id
指定反向关系并使用mappedBy

class User{
 ....

 @ManyToOne
 @JoinColumn(name="Item ")
 private Item item;
 ...

}

FROM User where id= :grantedUsersIds or id = :ownerUserids

您的用户类中应该有Item的多个One关系,从上面的查询中,您可以从以下位置的hibernate文档中获取所有项目


d.grantedUsers.id
它能工作吗??因为它是集合而不是对象,所以您需要在HQL中对集合使用集合操作关键字。@Antoniosss请提供任何示例
class User{
 ....

 @ManyToOne
 @JoinColumn(name="Item ")
 private Item item;
 ...

}

FROM User where id= :grantedUsersIds or id = :ownerUserids
select d from Item d join d.grantedUsers u 
    where d.ownerUser.id = :id or u.id = :id