У меня есть сопоставление «один ко многим» с классом «Item
» в качестве родителя и классом «ItemSizeCost
» в качестве дочернего.
Я добавил @OneToMany
и @JoinColumn
в родительский класс.
Когда я пытаюсь сохранить родительский объект, я вижу спящий вопрос: три SQL-оператора
insert into item (category_id, description, name) values (?, ?, ?)
insert into item_size_cost (cost, item_id, size_id) values (?, ?, ?)
update item_size_cost set item_id=? where id=?
Я хочу понять причину последних двух утверждений (вставить в child и обновить child). После некоторого поиска в Google, я обнаружил, что причина может быть связана со сменой порядка гибернации, но не могу понять полностью. У кого-нибудь есть хорошие ссылки, чтобы понять порядок сброса Hibernate? Любое объяснение будет оценено. Я упоминаю мои занятия ниже -
Item -
@Entity
@Table(name="item")
public class Item {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="category_id")
private Category category;
@Column(name="name")
private String name;
@Column(name="description")
private String description;
@OneToMany(fetch = FetchType.LAZY,
cascade= {CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE})
@JoinColumn(name="item_id")
List<ItemSizeCost> itemSizeCostList;
.....
}
ItemSizeCost -
@Entity
@Table(name="item_size_cost")
public class ItemSizeCost {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@ManyToOne(fetch = FetchType.LAZY)
/*@JoinColumn(name="item_id")*/
private Item item;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="size_id")
private Size size;
@Column(name="cost")
private double cost;
....
}