gpt4 book ai didi

java - EclipseLink JPA 中的 CASCADETYPE

转载 作者:行者123 更新时间:2023-12-01 15:43:09 24 4
gpt4 key购买 nike

我有两个类。第一类是TNota。

@Entity
@Table(name = "t_nota")
public class TNota implements Serializable {
@Id
@SequenceGenerator(name="seq_t_nota", sequenceName="seq_t_nota", initialValue=37, allocationSize=1)
@GeneratedValue(generator="seq_t_nota")
@Basic(optional = false)
@Column(name = "id_nota", nullable = false)
private double idNota;

@Basic(optional = false)
@Column(name = "nota", nullable = false, length = 255)
private String nota;

@JoinColumn(name = "id_tipo_nota", referencedColumnName = "id", nullable = false)
@ManyToOne(optional = false)
private NTipoNota nTipoNota;

public TNota() {
}

public TNota(Long idNota) {
this.idNota = idNota;
}

public double getIdNota() {
return idNota;
}

public void setIdNota(double idNota) {
this.idNota = idNota;
}

public String getNota() {
return nota;
}

public void setNota(String nota) {
this.nota = nota;
}

public NTipoNota getNTipoNota() {
return nTipoNota;
}

public void setNTipoNota(NTipoNota nTipoNota) {
this.nTipoNota = nTipoNota;
}
}

另一个类是 NtipoNota..

@Entity
@Table(name = "n_tipo_nota")
public class NTipoNota implements Serializable {
@Id
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Integer id;
@Basic(optional = false)
@Column(name = "nombre", nullable = false, length = 255)
private String nombre;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "nTipoNota",fetch=FetchType.LAZY)
private List<TNota> tNotaList;

public NTipoNota() {
}

public NTipoNota(Integer id) {
this.id = id;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public List<TNota> getTNotaList() {
return tNotaList;
}

public void setTNotaList(List<TNota> tNotaList) {
this.tNotaList = tNotaList;
}
}

我将所有类型的笔记存储在数据库中。我只想保留一个新的 TNota,如下所示,但我收到错误,因为它保留了数据库中已存在的 id= 5 的新 NTipoNota。使用 TopLink 我从来没有遇到过这样的麻烦:

TNota note = new TNota();
note.setNota("Hola mundo");
note.setNTipoNota(new NTipoNota(5));
manager.persist(note);

我修复如下:

TNota note = new TNota();
note.setNota("Hola mundo");
note.setNTipoNota(manager.find(NTipoNota.class, 5);
manager.persist(note);

我不想因为这个问题而更改所有代码。当我们创建对象的新实例时,是否有任何形式可以不保留对象?

谢谢大家。

最佳答案

您的新代码是正确的,而您之前的代码不正确。您还可以调用 merge 来解决关系。

关于java - EclipseLink JPA 中的 CASCADETYPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7663275/

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