我有一张可以代表树的表。
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中执行此操作,但我宁愿不这样做。我做错了什么?
答案 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()));