Primavera JPA - uno a muchos - Re-crianza de los hijos

nickj:

Tengo algunas entidades en una one-to-manyrelación.

El padre:

@Entity
@Cacheable(false)
@Table(name="form_area")
public class FormArea {

  @OneToMany(fetch = FetchType.LAZY, mappedBy="formArea", cascade = { CascadeType.MERGE, CascadeType.PERSIST }) 
  private List<AssignableArea> assignableAreas = new ArrayList<AssignableArea>();

  ...
}

El niño:

@Entity
@Cacheable(false)
@Table(name="assignable_area")
public class AssignableArea {
  private @ManyToOne FormArea formArea;
  ...
}

El objeto secundario, AssignableArea también tiene captador / definidor en la matriz, FormArea.

Cuando volví a los padres mediante setFormArea(), al parecer con éxito, en la que la base de datos contiene la información correcta. Pero cuando llamo getAssignableAreas()en FormArea:

public List<AssignableArea> getAssignableAreas() {
  return Collections.unmodifiableList(new ArrayList<>(assignableAreas));
}

Veo la lista de edad, antes de volver a ser padres. ¿Por qué aparece la lista de rancio de edad, cuando espero ver la lista actualizada?

JB Nizet:

La razón más probable es que ya haya cargado el FormAreay su lista de assignableAreas, y sólo informado uno de los lados de la asociación, por lo que el otro se queda secundarios, ya que se ha cargado: es su responsabilidad mantener ambos lados de la asociación si importa para ti.

Si inicia una nueva transacción y volver a cargar el FormArea, la lista contendrá los elementos correctos.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=192153&siteId=1
Recomendado
Clasificación