gpt4 book ai didi

java - 使用什么级联类型来仅保存多对多映射的子级列表?

转载 作者:行者123 更新时间:2023-12-02 08:11:11 25 4
gpt4 key购买 nike

假设实体类 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 列表,但只保存映射列表,例如:

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 保留对列表的更改,但不保留对实体的更改。我可以吗?

最佳答案

CascadeType.PERSIST 有点像你想要的那样,但它取决于你的 foo 对象的起始状态。如果旧的 foo 处于托管状态,那么您对 ​​oldBar 所做的更改将是持久的。这确实不能被“关闭”。如果持久对象的值不应该被更改,为什么要更改它呢?它在 ORM 上下文中并没有真正的意义。

关于java - 使用什么级联类型来仅保存多对多映射的子级列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7396578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com