我是Hibernate的新手。
我有一个ItemPOJO,其中包含一个Set<String>标签。标签包含在该Item表的另一个数据库表中,因此我进行了连接以填充pojo。
Item
Set<String>
我正在尝试从我的《 Java Persistance with Hibernate》一书中运行一个简单的示例查询from Item item where 'hello' member of item.labels。只是出于某种原因,我得到了
from Item item where 'hello' member of item.labels
`org.hibernate.hql.ast.QuerySyntaxException: unexpected end of subtree[from /*qualified class path*/.Item item where 'hello' member of item.labels]`
是什么导致此问题?
这是我的POJO:
public class Item private int uuid; private Set<String>labels = new HashSet<String>(); @Id public int getUuid(){ return uuid; } @CollectionOfElements @JoinTable(name="labels", joinColumns=@JoinColumn(name="uuid")) @Column(name="label") public Set<String> getLabels(){ return labels; } }
对于基元集合,应使用HQL查询,如下所示:
from Item item join item.labels lbls where 'hello' in (lbls)
PS:因为“标签”是OneToMany或ManyToMany变体,所以需要“ join”,因为“ lbls”是一个集合,所以需要括号