私はテーブルA、B、Cを持っています.Bは列を追加した関連テーブルです
| | あ | 1 .. * | ビ | * .. 1 | シー |
エンティティ 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
}
...そして、オブジェクト C を具体的な名前に関連付けたオブジェクト A を取得したいと思います
私はこの方法でそれをやろうとしましたが、うまくいきません
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
ご協力ありがとう御座います