Контекст: Java-приложение с пружинной загрузкой и neo4j для бэкенда и угловым 5 для внешнего интерфейса.
Проблема, которую нужно решить: Когда я сохраняю объект US, который может иметь 3 разных типа отношений сдругие случаи США стирают отношения его ребенка. Пример:
US2 синхронно с US3 .Если я поставлю US1 перед US3 , соотношение между US2 и US3 исчезнет.
Вопрос в том,есть конфигурация или способ предотвратить это?
Отредактировано:
@Component
@NodeEntity(label = UniteStratigraphique.LABEL)
public class UniteStratigraphique extends NeoModel {
private static final long serialVersionUID = 1L;
public static final String NAME = "us";
public static final String LABEL = "US";
public static final String IS_SYNCHRONOUS = "EST_SYNCHRONE";
public static final String IS_PREVIOUS = "EST_ANTERIEURE";
public static final String IS_LOCATED_ON = "EST_SITUEE_SUR";
public static final String HAS_A_PHASE = "EST_ASSOCIE_A";
private static final String IS_COLLECTED_ON = "EST_RECUEILLI_SUR";
@NotNull
@Index(unique=true)
@Pattern(regexp="^.*\\.[0-9]{1,4}$")
private String identification;
@Length(min = 0, max = 500)
private String description;
@Length(min = 0, max = 500)
private String comment;//commentaire
@Relationship(type = HAS_A_PHASE, direction = Relationship.OUTGOING )
private Phase phase;
@NotNull
@Relationship(type = IS_LOCATED_ON, direction = Relationship.OUTGOING)
private Chantier chantier;
@DateTimeFormat(pattern = "dd/MM/yyyy", iso = ISO.DATE)
private Date beginningDate;
@DateTimeFormat(pattern = "dd/MM/yyyy", iso = ISO.DATE)
private Date endDate;
private String type;
@Length(min = 0, max = 4)
private String longueur;
@Length(min = 0, max = 4)
private String largeur;
private String coordonneeLambertX;
private String coordonneeLambertY;
@JsonSerialize(using = UsListRelationSerializer.class)
@Relationship(type = IS_SYNCHRONOUS, direction = Relationship.UNDIRECTED)
private Set<UniteStratigraphique> usSynchrones;
@JsonSerialize(using = UsListRelationSerializer.class)
@Relationship(type = IS_PREVIOUS, direction = Relationship.INCOMING)
private Set<UniteStratigraphique> usAnterieures;
@JsonSerialize(using = UsListRelationSerializer.class)
@Relationship(type = IS_PREVIOUS, direction = Relationship.OUTGOING)
private Set<UniteStratigraphique> usPosterieures;
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
@Relationship(type = ElementRecueilli.IS_COLLECTED_ON, direction = Relationship.INCOMING)
private Set<ElementRecueilli> ers;
public Phase getPhase() {
return phase;
}
public void setPhase(Phase phase) {
this.phase = phase;
}
public String getIdentification() {
return identification;
}
public void setIdentification(String identification) {
this.identification = identification;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public Chantier getChantier() {
return chantier;
}
public void setChantier(Chantier chantier) {
this.chantier = chantier;
}
public Date getBeginningDate() {
return beginningDate;
}
public void setBeginningDate(Date beginningDate) {
this.beginningDate = beginningDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Set<UniteStratigraphique> getUsSynchrones() {
if (usSynchrones == null)
usSynchrones = new HashSet<>();
return usSynchrones;
}
public void setUsSynchrones(Set<UniteStratigraphique> usSynchrones) {
this.usSynchrones = usSynchrones;
}
public Set<UniteStratigraphique> getUsAnterieures() {
if (usAnterieures == null)
usAnterieures = new HashSet<>();
return usAnterieures;
}
public void setUsAnterieures(Set<UniteStratigraphique> usAnterieures) {
this.usAnterieures = usAnterieures;
}
public Set<UniteStratigraphique> getUsPosterieures() {
if (usPosterieures == null)
usPosterieures = new HashSet<>();
return usPosterieures;
}
public void setUsPosterieures(Set<UniteStratigraphique> usPosterieures) {
this.usPosterieures = usPosterieures;
}
public void setErs(Set<ElementRecueilli> ers) {
this.ers = ers;
}
public Set<ElementRecueilli> getErs() {
if (ers == null)
ers = new HashSet<>();
return ers;
}
@Override
public String getLabel() {
// TODO Auto-generated method stub
return UniteStratigraphique.LABEL;
}
@Override
public String getName() {
// TODO Auto-generated method stub
return NAME;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
//////other getter and setter