次のように、@OneToMany と @ManyToOne の双方向リレーションを持つ 2 つのテーブルがあります。
@Entity
public class Asset {
private int id;
private int count;
@OneToMany
private Set<Dealing> dealings;
...
}
@Entity
public class Dealing {
private int id;
...
@ManyToOne
@JoinColumn(name = "customer_id", nullable = false, updatable = false)
private Customer customer;
@ManyToOne
@JoinColumn(name = "product_id", nullable = false, updatable = false)
private Product product;
@ManyToOne(cascade = CascadeType.ALL)
private Asset asset;
}
どうでもいい話なのですが、このように制限を使ってデータを検索したいときは、
session.createCriteria(Asset.class).add(Restrictions.eq("dealings.customer.id", customerId)).add(Restrictions.eq("dealing.product.id", productId)).list();
このレベルでは、このエラーが発生します。
could not resolve property: dealings.customer of: com.project.foo.model.Asset
解決策の 1 つは私の戦略を変更することですが、私はこれを見つけるために時間を無駄にしました。