Hibernate和意外的Subtree异常结束

Sco*_*nes 22 java hibernate hql

我是Hibernate的新手.

我有一个Item包含Set<String>标签的POJO .标签包含在表中的另一个Database表Item中,因此我进行了连接以填充pojo.

我正在尝试从我查询的"Java Persistance with Hibernate"一书中运行一个简单的示例查询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]`
Run Code Online (Sandbox Code Playgroud)

可能导致此问题的原因是什么?

这是我的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;
       }
 }
Run Code Online (Sandbox Code Playgroud)

Pan*_*rit 49

从谷歌搜索,您的参数集合似乎是空的.我在调用查询之前添加一个空的检查.

经验教训是谷歌是你的朋友.如果您无法找出错误消息,请尝试将其键入Google(或您最喜欢的引擎).您不太可能成为第一个被它迷惑的人.


Yur*_*kin 7

对于基元集合,您应该使用如下的HQL查询:

from Item item join item.labels lbls where 'hello' in (lbls)
Run Code Online (Sandbox Code Playgroud)

PS:'join'是必需的,因为'标签'是OneToMany或ManyToMany变体,括号是必需的,因为'lbls'是一个集合