假设实体类Foo和Bar如:
class Foo {
@ManyToMany
@JoinTable(name = "FooBar",
joinColumns = @JoinColumn(name = "foo"),
inverseJoinColumns = @JoinColumn(name = "bar"))
public List<Bar> getBars() {
return bars;
}
}
class Bar {
// ...
}
当我保存Foo实体时,我也想保存条形图列表,但只保存映射列表,例如:
Bar oldBar = foo.getBars().get(0);
oldBar.setSomething("new-value"); // Change to the entity.
Bar newbar = new Bar();
foo.getBars().add(newbar); // Change to the list.
saveOrUpdate(foo);
我希望saveOrUpdate
将更改保留在列表中,但不会更改实体。我可以吗?
答案 0 :(得分:2)
CascadeType.PERSIST
可以做你想要的,但它取决于你的foo对象的起始状态。如果旧的foo处于托管状态,那么对oldBar所做的更改是持久的。这真的不能“关闭”。如果不应该更改持久对象的值,为什么还要更改它?在ORM环境中它没有意义。