customer = // get customer from the current hibernate session
// customer has a discount with database id of 1
Пока все хорошо. Но если я позвоню:
discount = SpecialDiscount.create("10%");
customer.setDiscountTo(discount);
session.save(customer);
// customer has a discount with database id of 2 now
Как hibernate может обновить ту же строку скидки с идентификатором 2, даже если я установил ее для другого объекта значения скидки? Кроме того, я хочу предотвратить ошибки «объект с той же идентичностью уже существует», отсоединив предыдущую или около того. Что вы предлагаете?
// An entity
class Customer {
// one-to-one mapped immutable value object
SpecialDiscount discount;
SpecialDiscount discount() {
return SpecialDiscount.create(this.discount);
}
void setDiscountTo(SpecialDiscount discount) {
this.discount = SpecialDiscount.create(discount);
}
}