Вот моя ситуация: у меня есть объект ObjectA
, который содержит список ObjectB
, а в ObjectB
у меня есть ObjectC
, полученный через веб-сервис от третьей стороны.
public class ObjectA{
@OneToMany(cascade={CascadeType.ALL})
private List<ObjectB> listObjectB;
}
public class ObjectB{
@ManyToOne(cascade={CascadeType.ALL})
private ObjectC objectC;
}
Как только пользователь пытается сохранить ObjectA
, сохранение распространяется по цепочке и пытается сохранить все. Однако ObjectC
должен быть уникальным. И чтобы убедиться, что, как только я получу ObjectC
от веб-службы, я ищу в своей базе данных существующую копию, и в случае ее наличия я заменю всю ObjectC
своей копией в базе данных.
Но может случиться так, что ObjectA
имеет несколько ObjectB
, относящихся к тому же несохраненному ObjectC
. Когда это происходит, и я пытаюсь сохранить ObjectA
из-за каскада, я получаю сообщение об ошибке, потому что пытаюсь сохранить один и тот же ObjectC
несколько раз.
Как я могу сохранить ObjectC
и предотвратить это?