【发布时间】:2012-05-07 09:15:47
【问题描述】:
我有表 A、B、C,其中 B 是添加列的关联表
|一个 | 1 .. * |乙| * .. 1 | C |
实体 A 和 B 实体列表
@Entity
@Table(name = "a")
public class A {
//id
@OneToMany(mappedBy="bPK.a", cascade={CascadeType.ALL})
private List<B> listB;
// getters, setters
}
实体 B 已嵌入 PK
@Entity
@Table(name = "b")
public class B {
@EmbeddedId
private BPK bPK;
// added columns
// getters, setters
}
嵌入式主键类:
@Embeddable
public class BPK implements Serializable {
private static final long serialVersionUID = 1L;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="i_a", nullable=false)
private A a;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="i_c", nullable=false)
private C c;
// getters, setters
}
实体 C
@Entity
@Table(name = "c")
public class C {
@Column(name = "i_c")
private Long iC;
@Column(name="name")
private String name;
// getters, setters
}
...我想获得这样的对象 A,其中对象 C 与具体名称相关联
我尝试过这样做,但它不起作用
Criteria criteria = session.createCriteria(A.class);
criteria.createAlias("listB", "bList")
criteria.add(Restrictions.like("bList.bPK.c.name", "name", MatchMode.ANYWHERE));
我有以下异常:
org.springframework.orm.hibernate3.HibernateQueryException:无法解析属性:bPK.c.name
谢谢你的帮助
【问题讨论】:
-
你有没有找到解决这个问题的方法?你是用 HQL 的吗?
-
谢谢,我最终也是这样做的......
标签: hibernate hibernate-criteria