Hi,
I have a ManyToOne relation.
When I try to insert a row in the table hibernate trows that the ID of the reference object is null.
ORA-01400: cannot insert NULL into ("UWTESTW"."REPORTPARAMETROS"."REPA_IDREPORTCABECERA")
That is the code
ParametrosInforme
Code:
package com.uw.diode.entity;
import static javax.persistence.FetchType.EAGER;
import static org.hibernate.annotations.NotFoundAction.IGNORE;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import org.hibernate.annotations.NotFound;
@Entity
@Table(name="ReportParametros")
public class ParametrosInforme implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1317245204391348960L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "REPORTPARAMETROS_SEQ")
@SequenceGenerator(name="REPORTPARAMETROS_SEQ", sequenceName = "REPORTPARAMETROS_SEQ")
@Column(name="Repa_IdReportParametros", precision=10)
private long id;
@ManyToOne(fetch=EAGER)
@JoinColumn(name="REPA_IDREPORTCABECERA", insertable=false, updatable=false)
@NotFound(action=IGNORE)
private CabeceraInforme cabeceraInforme;
@Column(name="Repa_Clave", length=30)
private String clave;
@Column(name="Repa_Nombre", length=100)
private String nombre;
@Column(name="Repa_Tipo", length=1)
private String tipo;
@Column(name="Repa_Valor", length=1)
private String tipoValor;
@Column(name="Repa_Maximo", precision=3)
private Long longitud;
@Column(name="Repa_Fegraba")
private Date fechaGrabacion;
@Column(name="Repa_Emgraba", length=20)
private String empleadoGrabacion;
@Column(name="Repa_Femodifica")
private Date fechaModificacion;
@Column(name="Repa_Emmodifica", length=20)
private String empleadoModificacion;
public Date getFechaModificacion() {
return fechaModificacion;
}
public void setFechaModificacion(Date fechaModificacion) {
this.fechaModificacion = fechaModificacion;
}
public String getEmpleadoModificacion() {
return empleadoModificacion;
}
public void setEmpleadoModificacion(String empleadoModificacion) {
this.empleadoModificacion = empleadoModificacion;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public CabeceraInforme getCabeceraInforme() {
return cabeceraInforme;
}
public void setCabeceraInforme(CabeceraInforme cabeceraInforme) {
this.cabeceraInforme = cabeceraInforme;
}
public String getClave() {
return clave;
}
public void setClave(String clave) {
this.clave = clave;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public String getTipoValor() {
return tipoValor;
}
public void setTipoValor(String tipoValor) {
this.tipoValor = tipoValor;
}
public Long getLongitud() {
return longitud;
}
public void setLongitud(Long longitud) {
this.longitud = longitud;
}
public Date getFechaGrabacion() {
return fechaGrabacion;
}
public void setFechaGrabacion(Date fechaGrabacion) {
this.fechaGrabacion = fechaGrabacion;
}
public String getEmpleadoGrabacion() {
return empleadoGrabacion;
}
public void setEmpleadoGrabacion(String empleadoGrabacion) {
this.empleadoGrabacion = empleadoGrabacion;
}
}
CabeceraInformeCode:
package com.uw.diode.entity;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import static javax.persistence.FetchType.EAGER;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import org.hibernate.annotations.NotFound;
import com.uw.diode.util.Tools;
import static org.hibernate.annotations.NotFoundAction.IGNORE;;
@Entity
@Table(name="ReportCabecera")
public class CabeceraInforme implements Serializable {
/**
*
*/
private static final long serialVersionUID = -3045888821211416269L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "REPORTCABECERA_SEQ")
@SequenceGenerator(name="REPORTCABECERA_SEQ", sequenceName = "reportcabecera_seq")
@Column(name="Recab_IdReportCabecera", precision=10)
private long id;
@Column(name="Recab_Clave", length=20)
private String nombre;
@Column(name="Recab_Descorta", length=100)
private String descripcionCorta;
@Column(name="Recab_Deslarga", length=500)
private String descripcionLarga;
@Column(name="Recab_Area", length=20)
private String area;
@Column(name="Recab_Disponibledesde")
private Date fechaInicio;
@Column(name="Recab_DisponibleHasta")
private Date fechaFin;
@Column(name="Recab_Nomberuta", length=200)
private String nombreRuta;
@Column(name="Recab_Fegraba")
private Date fechaGrabacion;
@Column(name="Recab_Emgraba", length=20)
private String empleadoGrabacion;
@Column(name="Recab_Femodifica")
private Date fechaModificacion;
@Column(name="Recab_Emmodifica", length=20)
private String empleadoModificación;
@OneToMany(fetch=EAGER)
@JoinColumn(name="RELOGEJE_IDREPORTCABECERA")
@NotFound(action=IGNORE)
@OrderBy("fechaEjecucion desc")
private List<LogEjecucionInformes> logEjecucionInformes;
public Date getFechaModificacion() {
return fechaModificacion;
}
public void setFechaModificacion(Date fechaModificacion) {
this.fechaModificacion = fechaModificacion;
}
public String getEmpleadoModificación() {
return empleadoModificación;
}
public void setEmpleadoModificación(String empleadoModificación) {
this.empleadoModificación = empleadoModificación;
}
public List<LogEjecucionInformes> getLogEjecucionInformes() {
return logEjecucionInformes;
}
public void setLogEjecucionInformes(
List<LogEjecucionInformes> logEjecucionInformes) {
this.logEjecucionInformes = logEjecucionInformes;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDescripcionCorta() {
return descripcionCorta;
}
public void setDescripcionCorta(String descripcionCorta) {
this.descripcionCorta = descripcionCorta;
}
public String getDescripcionLarga() {
return descripcionLarga;
}
public void setDescripcionLarga(String descripcionLarga) {
this.descripcionLarga = descripcionLarga;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public Date getFechaInicio() {
return fechaInicio;
}
public String getFechaInicioFormateada()
{
return Tools.convertirFechaAString(getFechaInicio());
}
public void setFechaInicio(Date fechaInicio) {
this.fechaInicio = fechaInicio;
}
public Date getFechaFin() {
return fechaFin;
}
public String getFechaFinFormateada()
{
return Tools.convertirFechaAString(getFechaFin());
}
public void setFechaFin(Date fechaFin) {
this.fechaFin = fechaFin;
}
public String getNombreRuta() {
return nombreRuta;
}
public void setNombreRuta(String nombreRuta) {
this.nombreRuta = nombreRuta;
}
public Date getFechaGrabacion() {
return fechaGrabacion;
}
public String getFechaGrabacionFormateada ()
{
return Tools.convertirFechaHoraAString(getFechaGrabacion());
}
public void setFechaGrabacion(Date fechaGrabacion) {
this.fechaGrabacion = fechaGrabacion;
}
public String getEmpleadoGrabacion() {
return empleadoGrabacion;
}
public void setEmpleadoGrabacion(String empleadoGrabacion) {
this.empleadoGrabacion = empleadoGrabacion;
}
public int getNumEjecuciones()
{
if (this.logEjecucionInformes != null)
return this.logEjecucionInformes.size();
else
return 0;
}
public Date getFechaUltimaEjecucion()
{
Date ultimaEjecucion = null;
if (logEjecucionInformes != null && logEjecucionInformes.size() > 0 && logEjecucionInformes.get(0) != null)
ultimaEjecucion = ((LogEjecucionInformes)logEjecucionInformes.get(0)).getFechaEjecucion();
return ultimaEjecucion;
}
public String getFechaUltimaEjecucionFormateada()
{
return Tools.convertirFechaAString(getFechaUltimaEjecucion());
}
public String getFechaHoraUltimaEjecucionFormateada()
{
return Tools.convertirFechaHoraAString(getFechaUltimaEjecucion());
}
}
What is the problem?
Thank you,
Praedos[/b]