Hola
Fuzzylog Intenté lo que me djisiste y me dio este error:
ERROR: HHH000346: Error during managed flush [org.hibernate.HibernateException: identifier of an instance of app.model.entity.Venta was altered from app.model.entity.VentaKey@476435fd to null]
¿La clase del composite key no será el problema?
Código Java:
Ver originalpackage app.model.entity;
import app.contr.util.Conversiones;
import java.io.Serializable;
import java.util.*;
import javax.persistence.*;
import up.max.proyectpages.structs.PagesList;
@Table(name = "subastas")
..............
{
.................
@OneToMany(mappedBy = "key.subasta",cascade = CascadeType.MERGE)
.................
}
Código Java:
Ver originalpackage app.model.entity;
import java.io.Serializable;
import java.util.List;
import javax.persistence.*;
@Table(name = "ventas")
{
@EmbeddedId
private VentaKey key;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "estId")
private Estado obje;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "venta")
private List<Registro>registros;
public VentaKey getKey() {
return key;
}
public void setKey(VentaKey key) {
this.key = key;
}
public Estado getObje() {
return obje;
}
public void setObje(Estado obje) {
this.obje = obje;
}
public List<Registro> getRegistros() {
return registros;
}
public void setRegistros(List<Registro> registros) {
this.registros = registros;
}
public Venta() { }
public Venta(Subasta xobjs, Artefacto xobja, Estado obje) {
this.key = new VentaKey(xobjs,xobja);
this.obje = obje;
}
@Override
public boolean equals
(Object obj
) { if(obj instanceof Venta){
Venta v =(Venta)obj;
return v.key.getObja() == this.key.getObja() && v.obje.equals(this.obje);
} else {
return false;
}
}
@Override
public int hashCode() {
int hash = 17;
hash = 31 * hash + this.key.getObja().hashCode();
hash = 31 * hash + this.obje.hashCode();
return hash;
}
@Override
return this.key.getObja().getNombre() + " - estado: " + this.obje.getNombre();
}
}
Código Java:
Ver originalpackage app.model.entity;
import java.io.Serializable;
import javax.persistence.*;
@Embeddable
{
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "suId")
private Subasta subasta;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "artId")
private Artefacto obja;
public Subasta getObjs(){
return subasta;
}
public void setObjs(Subasta objs) {
this.subasta = objs;
}
public Artefacto getObja() {
return obja;
}
public void setObja(Artefacto obja) {
this.obja = obja;
}
public VentaKey(){}
public VentaKey(Subasta xobjs, Artefacto xobja) {
this.subasta = xobjs;
this.obja = xobja;
}
@Override
public boolean equals
(Object obj
){ if(obj instanceof VentaKey){
VentaKey id =(VentaKey)obj;
return id.subasta.equals(this.subasta) && id.obja.equals(this.obja);
} else {
return false;
}
}
@Override
public int hashCode(){
int hash = 17;
hash = 31 * hash + this.subasta.hashCode();
hash = 31 * hash + this.obja.hashCode();
return hash;
}
}
Subasta tiene una colección onetomany de ventas, pero ventas tiene una variable de tipo ventakey la cual tiene la subasta y artefacto (que son las claves primarias de la tabla ventas en mi bd) como atributo.
Que rebuscado es esto.
Espero sus respuestas y saludos.