gpt4 book ai didi

postgresql - 同一实体的多个表示正在与@OneToMany 合并

转载 作者:行者123 更新时间:2023-11-29 13:11:02 26 4
gpt4 key购买 nike

我有一个使用 Spring Boot 构建的 Web 应用程序,该应用程序连接了一个 db PostgreSql,该项目是关于一个教育机构并管理学生和开具发票...

我手动生成所有发票。我通常添加第一个 cuota(发票)但是当我想生成第二个时,我遇到了这个问题:

java.lang.IllegalStateException: Multiple representations of the same entity [com.codeboros.app.entity.Cuota#1] are being merged. Detached: [com.codeboros.app.entity.Cuota@1788e1df]; Managed: [com.codeboros.app.entity.Cuota@2697e3fc]

我有这个实体:

@Entity
@Table(name="ALUMNOS")
public class Alumno implements Serializable {
@OneToMany(mappedBy="alumno", cascade= {CascadeType.DETACH,CascadeType.PERSIST,CascadeType.DETACH,CascadeType.REMOVE,CascadeType.REFRESH,CascadeType.MERGE}, fetch=FetchType.LAZY)
@NotFound(action = NotFoundAction.IGNORE)
@JsonIgnore
private List<Cuota> cuotas;
}

@Entity
@DiscriminatorValue(value="Cuota")
public class Cuota extends Factura implements Serializable {
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="alumno_cod")
@NotFound(action = NotFoundAction.IGNORE)
Alumno alumno;
}

还有 AlumnoController

@PostMapping("/alumnoGenCuota/{id}")    
public String GenCuota(@PathVariable Long id, Cuota cuota) {
Alumno alumno = alumnoService.get(id);
cuota.setAlumno(alumno);
cuota.setMonto(alumno.getCurso().getCuota());
cuota.setDetalle(alumno.getCurso().getNombre()+": $"+alumno.getCurso().getCuota()); //detalle
alumno.AgregarCuota(cuota);

alumnoService.save(alumno);

return "redirect:/alumnocuotas/"+id;
}

我试图删除 CascadeType.MERGE 但不保存新闻 Cuotas

最佳答案

如果您没有使用 Hibernate,请从实体中删除 CascadeType.MERGE 不允许您保留分离的实体或放置除 CascadeType.MERGE 之外的所有级联类型>

如果您使用的是 Hibernate,请将以下行添加到您的 persistence.xml -

<property name="hibernate.event.merge.entity_copy_observer" value="allow"/>

当您设置 hibernate.event.merge.entity_copy_observer=allow 时,Hibernate 将在级联合并操作时合并检测到的每个实体副本。在合并每个实体副本的过程中,Hibernate 会将合并操作从每个实体副本级联到它与 cascade=CascadeType.MERGECascadeType.ALL 的关联。当合并另一个实体副本时,合并实体副本产生的实体状态将被覆盖。

关于postgresql - 同一实体的多个表示正在与@OneToMany 合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54754311/

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