I have a class with some collections:
package org.casaspa.utopia.model.entities.sociale;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import javax.validation.constraints.NotNull;
import org.casaspa.utopia.common.model.entities.BaseEntity;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import org.hibernate.annotations.SortNatural;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* The persistent class for the segnalazione database table.
*
*/
@Entity(name="Segnalazione")
@Table(name="segnalazione", schema="sociale")
@NamedQuery(name="Segnalazione.findAll", query="SELECT s FROM Segnalazione s")
public class Segnalazione extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
private String titolo;
private String descrizione;
@Column(name="utente_segnalante")
private String utenteSegnalante;
@NotNull
@Column(name="indicatore_gravita", nullable = false)
private short indicatoreGravita;
@Column(name="ts_segnalazione")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm", timezone = "Europe/Rome")
private Timestamp tsSegnalazione;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="tipologia")
@JsonProperty("tipologia")
private RctSegnalazioneTipologia tipologia;
@NotNull
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="provenienza")
@JsonProperty("provenienza")
private RctSegnalazioneProvenienza provenienza;
@NotNull
//bi-directional many-to-one association to RctSegnalazioneStato
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="stato", nullable= false)
@JsonProperty("stato")
private RctSegnalazioneStato stato;
@JsonManagedReference
@OneToMany(mappedBy="segnalazioneId", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@Column(nullable=true)
private SortedSet<SegnalazioneDettagli> segnalazioneDettaglis = new TreeSet<SegnalazioneDettagli>();
@Transient
private List<VNucleoAssegnatarioIndirizzo> vNucleoAssegnataris = new ArrayList<>();
@Transient
private List<VAlloggio> vAlloggis = new ArrayList<>();
@Transient
private List<VFabbricato> vFabbricatis = new ArrayList<>();
@Transient
private List<Problematica> problematicas = new ArrayList<>();
public Segnalazione() {
}
public String getDescrizione() {
return this.descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public short getIndicatoreGravita() {
return this.indicatoreGravita;
}
public void setIndicatoreGravita(short indicatoreGravita) {
this.indicatoreGravita = indicatoreGravita;
}
public RctSegnalazioneProvenienza getProvenienza() {
return this.provenienza;
}
public void setProvenienza(RctSegnalazioneProvenienza provenienza) {
this.provenienza = provenienza;
}
public RctSegnalazioneTipologia getTipologia() {
return this.tipologia;
}
public void setTipologia(RctSegnalazioneTipologia tipologia) {
this.tipologia = tipologia;
}
public String getTitolo() {
return this.titolo;
}
public void setTitolo(String titolo) {
this.titolo = titolo;
}
public RctSegnalazioneStato getStato() {
return this.stato;
}
public void setStato(RctSegnalazioneStato Stato) {
this.stato = Stato;
}
public Timestamp getTsSegnalazione() {
return tsSegnalazione;
}
public void setTsSegnalazione(Timestamp tsSegnalazione) {
this.tsSegnalazione = tsSegnalazione;
}
public String getUtenteSegnalante() {
return utenteSegnalante;
}
public void setUtenteSegnalante(String utenteSegnalante) {
this.utenteSegnalante = utenteSegnalante;
}
public SortedSet<SegnalazioneDettagli> getSegnalazioneDettaglis() {
return segnalazioneDettaglis;
}
public void setSegnalazioneDettaglis(SortedSet<SegnalazioneDettagli> segnalazioneDettaglis) {
this.segnalazioneDettaglis = segnalazioneDettaglis;
}
public List<VNucleoAssegnatarioIndirizzo> getvNucleoAssegnataris() {
return vNucleoAssegnataris;
}
public void setvNucleoAssegnataris(List<VNucleoAssegnatarioIndirizzo> vNucleoAssegnataris) {
this.vNucleoAssegnataris = vNucleoAssegnataris;
}
public List<VAlloggio> getvAlloggis() {
return this.vAlloggis;
}
public void setvAlloggis(List<VAlloggio> vAlloggis) {
this.vAlloggis = vAlloggis;
}
public List<VFabbricato> getvFabbricatis() {
return this.vFabbricatis;
}
public void setProblematicas(List<Problematica> problematicas) {
this.problematicas = problematicas;
}
public List<Problematica> getProblematicas() {
return this.problematicas;
}
public void setvFabbricatis(List<VFabbricato> vFabbricatis) {
this.vFabbricatis = vFabbricatis;
}
public void copy(Segnalazione segnalazioneSource) {
super.copy(segnalazioneSource);
this.descrizione = segnalazioneSource.descrizione;
this.indicatoreGravita = segnalazioneSource.indicatoreGravita;
this.provenienza = segnalazioneSource.provenienza;
this.tipologia = segnalazioneSource.tipologia;
this.titolo = segnalazioneSource.titolo;
this.stato = segnalazioneSource.stato;
this.tsSegnalazione = segnalazioneSource.tsSegnalazione;
this.utenteSegnalante = segnalazioneSource.utenteSegnalante;
this.vNucleoAssegnataris = segnalazioneSource.vNucleoAssegnataris;
this.vAlloggis = segnalazioneSource.vAlloggis;
this.vFabbricatis = segnalazioneSource.vFabbricatis;
this.problematicas = segnalazioneSource.problematicas;
}
}
and when i try to save this with em.persist i receive:
12:39:51,686 ERROR [org.jboss.as.ejb3.invocation] (default task-2) WFLYEJB0034: Jakarta Enterprise Beans Invocation failed on component SegnalazioniBean for method public abstract java.lang.Object org.casaspa.utopia.common.bean.IGenericResourceBean.createResource(java.lang.Object,java.lang.String,org.casaspa.utopia.common.model.entities.Utenti,java.lang.Integer): jakarta.ejb.EJBTransactionRolledbackException: Re-work support for semi-resolve
at org.jboss.as.ejb3@32.0.1.Final//org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:202)
at org.jboss.as.ejb3@32.0.1.Final//org.jboss.as.ejb3.tx.CMTTxInterceptor.mandatory(CMTTxInterceptor.java:330)
at org.jboss.as.ejb3@32.0.1.Final//org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:128)
at org.jboss.invocation@2.0.1.Final//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
Caused by: java.lang.UnsupportedOperationException: Re-work support for semi-resolve
at org.hibernate@6.4.4.Final//org.hibernate.type.CollectionType.getKeyOfOwner(CollectionType.java:396)
at org.hibernate@6.4.4.Final//org.hibernate.persister.entity.AbstractEntityPersister.getCollectionKey(AbstractEntityPersister.java:1568), i think the collection whith the problem is segnalazioneDettaglis, wich is: `
package org.casaspa.utopia.model.entities.sociale;
import java.io.Serializable;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import org.casaspa.utopia.common.model.entities.BaseEntity;
import org.casaspa.utopia.common.model.entities.Resource;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* The persistent class for the segnalazione_dettagli database table.
*
*/
@Entity
@Table(name = "segnalazione_dettagli", schema="sociale")
@NamedQuery(name="SegnalazioneDettagli.findAll", query="SELECT s FROM SegnalazioneDettagli s")
public class SegnalazioneDettagli extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
private String descrizione;
@Column(name="titolo")
private String titolo;
@OneToOne(fetch=FetchType.EAGER, cascade=CascadeType.REMOVE)
@JoinColumn(name="allegato")
private AllegatiSociale allegato;
//@Column(name="segnalazione_id")
@JsonBackReference
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(referencedColumnName = "entity_id",name = "segnalazione_id")
private Segnalazione segnalazioneId;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="stato")
@JsonProperty("stato")
private RctSegnalazioneStato stato;
public SegnalazioneDettagli() {
}
public AllegatiSociale getAllegato() {
return this.allegato;
}
public void setAllegato(AllegatiSociale allegato) {
this.allegato = allegato;
}
public String getDescrizione() {
return this.descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public Segnalazione getSegnalazioneId() {
return segnalazioneId;
}
public void setSegnalazioneId(Segnalazione segnalazioneId) {
this.segnalazioneId = segnalazioneId;
}
public RctSegnalazioneStato getStato() {
return this.stato;
}
public void setStato(RctSegnalazioneStato Stato) {
this.stato = Stato;
}
public String getTitolo() {
return titolo;
}
public void setTitolo(String titolo) {
this.titolo = titolo;
}
}
hibernate is 6.4.4
`, can someone help me?