gpt4 book ai didi

java - Hibernate:保存一个新的父级和子级,无需编辑自动生成的 bean 和 xml

转载 作者:行者123 更新时间:2023-12-02 06:14:27 25 4
gpt4 key购买 nike

我有一个从数据库自动生成的 bean:

@Entity
@Table(name = "richiesta", catalog = "gestione_utenza")
public class Richiesta implements java.io.Serializable {

private Integer idRichiesta;
private MessaggiErrore messaggiErrore;
private Stato stato;
private Date dataInserimento;
private Date dataElaborazione;
private String nota;
private String usernameAssegnato;
private String utenteAutorizzante;
private String urlattivazione;
private Anagrafica anagrafica;
private Set<RichiestaApplicazione> richiestaApplicaziones = new HashSet<RichiestaApplicazione>(
0);

public Richiesta() {
}

public Richiesta(Stato stato, Date dataInserimento) {
this.stato = stato;
this.dataInserimento = dataInserimento;
}

public Richiesta(MessaggiErrore messaggiErrore, Stato stato,
Date dataInserimento, Date dataElaborazione, String nota,
String usernameAssegnato, String utenteAutorizzante,
String urlattivazione, Anagrafica anagrafica,
Set<RichiestaApplicazione> richiestaApplicaziones) {
this.messaggiErrore = messaggiErrore;
this.stato = stato;
this.dataInserimento = dataInserimento;
this.dataElaborazione = dataElaborazione;
this.nota = nota;
this.usernameAssegnato = usernameAssegnato;
this.utenteAutorizzante = utenteAutorizzante;
this.urlattivazione = urlattivazione;
this.anagrafica = anagrafica;
this.richiestaApplicaziones = richiestaApplicaziones;
}

@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "idRichiesta", unique = true, nullable = false)
public Integer getIdRichiesta() {
return this.idRichiesta;
}

public void setIdRichiesta(Integer idRichiesta) {
this.idRichiesta = idRichiesta;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "codiceErrore")
public MessaggiErrore getMessaggiErrore() {
return this.messaggiErrore;
}

public void setMessaggiErrore(MessaggiErrore messaggiErrore) {
this.messaggiErrore = messaggiErrore;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "stato", nullable = false)
public Stato getStato() {
return this.stato;
}

public void setStato(Stato stato) {
this.stato = stato;
}

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "dataInserimento", nullable = false, length = 19)
public Date getDataInserimento() {
return this.dataInserimento;
}

public void setDataInserimento(Date dataInserimento) {
this.dataInserimento = dataInserimento;
}

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "dataElaborazione", length = 19)
public Date getDataElaborazione() {
return this.dataElaborazione;
}

public void setDataElaborazione(Date dataElaborazione) {
this.dataElaborazione = dataElaborazione;
}

@Column(name = "nota", length = 256)
public String getNota() {
return this.nota;
}

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

@Column(name = "usernameAssegnato", length = 20)
public String getUsernameAssegnato() {
return this.usernameAssegnato;
}

public void setUsernameAssegnato(String usernameAssegnato) {
this.usernameAssegnato = usernameAssegnato;
}

@Column(name = "utenteAutorizzante", length = 20)
public String getUtenteAutorizzante() {
return this.utenteAutorizzante;
}

public void setUtenteAutorizzante(String utenteAutorizzante) {
this.utenteAutorizzante = utenteAutorizzante;
}

@Column(name = "URLattivazione", length = 80)
public String getUrlattivazione() {
return this.urlattivazione;
}

public void setUrlattivazione(String urlattivazione) {
this.urlattivazione = urlattivazione;
}

@OneToOne(fetch = FetchType.LAZY, mappedBy = "richiesta")
public Anagrafica getAnagrafica() {
return this.anagrafica;
}

public void setAnagrafica(Anagrafica anagrafica) {
this.anagrafica = anagrafica;
}

@OneToMany(fetch = FetchType.LAZY, mappedBy = "richiesta")
public Set<RichiestaApplicazione> getRichiestaApplicaziones() {
return this.richiestaApplicaziones;
}

public void setRichiestaApplicaziones(
Set<RichiestaApplicazione> richiestaApplicaziones) {
this.richiestaApplicaziones = richiestaApplicaziones;
}

}

我想添加一个新的 Richiesta 和他的 child ,但是使用我编写的代码,我只能在表 Richiesta 中添加一个新行:

Richiesta ric = new Richiesta();
Stato st = new Stato();
st.setIdStato(1);
ric.setStato(st);
ric.setDataInserimento(new Date());

Integer[] appId = getApplicazioniSelezionateDefault();
for (int k=0; k<appId.length; k++)
{
Applicazione ap = new Applicazione();
ap.setIdApplicazione(appId[k]);
ric.getRichiestaApplicaziones().add( new RichiestaApplicazione( ap, ric));
}

Ufficio uf = new Ufficio();
uf.setIdufficio(this.getUfficioVDR());
Qualifica qu = new Qualifica();
qu.setIdQualifica( CommonUtil.getIndexInteger(getQualificaSelezionataVDR()) );
ric.setAnagrafica(new Anagrafica(uf, qu, ric, getCognomeVDR(), getNomeVDR(), getDataNascitaVDR(), getTelefonoVDR(), getEmailVDR(), getIpVDR()));

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(ric);
session.getTransaction().commit();

我希望在 Anagrafica 表中添加一个新行,在 RichestaApplicazione 表中添加“N”条新闻行。

@Entity
@Table(name = "anagrafica", catalog = "gestione_utenza")
public class Anagrafica implements java.io.Serializable {

private Integer idRichiesta;
private Ufficio ufficio;
private Qualifica qualifica;
private Richiesta richiesta;
private String cognome;
private String nome;
private Date dataNascita;
private String telefono;
private String email;
private String ip;

[...]

@GenericGenerator(name = "generator", strategy = "foreign", parameters = @Parameter(name = "property", value = "richiesta"))
@Id
@GeneratedValue(generator = "generator")
@Column(name = "idRichiesta", unique = true, nullable = false)
public Integer getIdRichiesta() {
return this.idRichiesta;
}

[...]
}

我阅读了将 CASCADE 属性添加到 xml/annotation 中,是否可以在不编辑 annotation/xml 的情况下实现它?例如在代码中添加一些内容。

最佳答案

要成为持久化实体,必须使用 session.persist(newEntity)session.save(newEntity) 将新实体实例添加到持久化上下文中。除了 ric 之外,您还没有对任何其他对象调用此方法。因此所有其他创建的实体仍然不是持久的。

关于java - Hibernate:保存一个新的父级和子级,无需编辑自动生成的 bean 和 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21625744/

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