Hibernate中间表添加修改数据的一个问题.
现在有三个table: plan(id, name), plan_machine(plan_id, machine_id), machine(id, name)
JPA只有plan 和 machine 的实体. plan和plan_machine的关联是通过下面方法关联的(存在plan实体里). @ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "plan_machine", joinColumns = { @JoinColumn(name = "plan_id") }, inverseJoinColumns = { @JoinColumn(name = "machine_id") })
@Column(nullable = true)
public List<Machine> getMachines() {
return this.machines;
}
现在我要添加一个plan, 可以通过 getMachines.add(Machine);
但是我发现我一执行这个操作, hibernate就会先把 这个plan下的数据全部都清了.然后逐条添加.
例如:
delete from plan_machine where plan_id = ?
insert into plan_machine(plan_id, macine_id) values(?,?);
insert into plan_machine(plan_id, macine_id) values(?,?);
insert into plan_machine(plan_id, macine_id) values(?,?);
........
现在我不想添加plan_machine的实体, 有什么办法可以通过配置参数不让他全部删除,重新添加. 我只想让hibernate添加新的数据.
现在有三个table: plan(id, name), plan_machine(plan_id, machine_id), machine(id, name)
JPA只有plan 和 machine 的实体. plan和plan_machine的关联是通过下面方法关联的(存在plan实体里). @ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "plan_machine", joinColumns = { @JoinColumn(name = "plan_id") }, inverseJoinColumns = { @JoinColumn(name = "machine_id") })
@Column(nullable = true)
public List<Machine> getMachines() {
return this.machines;
}
现在我要添加一个plan, 可以通过 getMachines.add(Machine);
但是我发现我一执行这个操作, hibernate就会先把 这个plan下的数据全部都清了.然后逐条添加.
例如:
delete from plan_machine where plan_id = ?
insert into plan_machine(plan_id, macine_id) values(?,?);
insert into plan_machine(plan_id, macine_id) values(?,?);
insert into plan_machine(plan_id, macine_id) values(?,?);
........
现在我不想添加plan_machine的实体, 有什么办法可以通过配置参数不让他全部删除,重新添加. 我只想让hibernate添加新的数据.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货