自连接表上的Hibernate查询失败

时间:2015-07-17 15:46:39

标签: sql hibernate orm

我有一张可以代表树的表。

key       number(10) NOT NULL,
parentkey number(10) NOT NULL,
name      varchar(20),

代表它的一个类。

@Entity
@Table(name = "example")
public class Example
{
    @Id
    @Column(name = "KEY")
    private long key;

    @Column(name = "NAME")  
    private String name;

    @ManyToOne
    @JoinColumn(name="parentkey",referencedColumnName="key")
    private Example parent;

    public Example()
    {
        parent = this;
    }

当我尝试查询实例及其父级时,我得到了

  

org.hibernate.QueryException:无法解析属性:parent.name of:com.Example

以下是我构建Criteria查询的方法:

        Example dsd = ...;
         ...
        Criteria crit = session.createCriteria(Example.class);
        crit.add(Restrictions.eq("name", dsd.getName()));       

        crit.add(Restrictions.eq("parent.name", dsd.getParent().getName()));

        return crit.list();

我可以在原始sql中执行此操作,但我宁愿不这样做。我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以创建alias

Criteria crit = session.createCriteria(Example.class);
crit.add(Restrictions.eq("name", dsd.getName()));       
crit.createAlias("parent", "parent");
crit.add(Restrictions.eq("parent.name", dsd.getParent().getName()));