Какой каскадный тип использовать, чтобы сохранить только список дочерних элементов отображения «многие ко многим»? - PullRequest
0 голосов
/ 13 сентября 2011

Допустим, классы сущностей 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 сохранить изменения в списке, но не изменения в объекте.Можно я?

1 Ответ

2 голосов
/ 13 сентября 2011

CascadeType.PERSIST делает то, что вы хотите, но это зависит от начального состояния вашего объекта foo.Если старый foo находится в управляемом состоянии, то изменения, которые вы вносите в oldBar, являются постоянными.Это не может быть «выключено».Зачем вам менять значение постоянного объекта, если он не должен быть изменен?Это не имеет смысла в контексте ORM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...