Hibernate、挿入や更新なし選択
質問
い製品のオブジェクトに属する可能性があることが一般的にすなわち古典的な関係です。
@Entity
public class Product{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
String name;
Double price;
@ManyToOne(fetch = FetchType.LAZY)
Category category;
...
}
@Entity
public class Category implements Identifiable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
...
}
したい挿入および製品情報を更新しましたなpreselectingます。このように:
Product product = dao.get(productId);
Category category = dao.get(categoryId);
product.setCategory(category);
dao.update(product);
または
Product product = new Product(somename);
Category category = dao.get(categoryId);
product.setCategory(category);
dao.insert(product);
できるの更新、挿入なカテゴリを選択?ならないようにしたい利用HQLしくは直接質問です。
解決
セッション。load() が存在する特例のようです。以下の
Category category = session.load(categoryId);
product.setCategory(category);
ませんのデータベースです。また、例外をスロー後(フラッシュはありません。がない場合、カテゴリーご利用に指定されたidです。
を使用 load()
よりはるかに高 merge()
なんの効果(カスケードなど)
他のヒント
Hibernateのニーズを安全な方法を決定する状態のオブジェクトです。そのためにも期待できる状態にする必要がありますな混合物からの異なるセッション(できな負荷のカテゴリ起動時にしか使用しています。
このセクションの負荷のカテゴリ起動時に設定キャッシュのプロバイダのように ehcache
このクラスをこのコード:
Product product = new Product(somename);
product.setCategory(session.merge(category));
その起こらない他のDBの往復の場合の設定のキャッシュカテゴリのインスタンス変更することができません.
うた:
Category category = new Category(categoryId);
product.setCategory(category);
とうまくいったというのは、製品の記録dbにも正しいリンクカテゴリとカテゴリid
categoryId
ヘブンが更新されませんでした。
所属していません StackOverflow