2011-07-20 19 views
2

我有此代碼ORA-01400不能插入在一個空的錯誤的一個關係

public void guardarAspirante(AspiranteDTO aspiranteDTO) { 
    Aspirante aspirante = new Aspirante(); 
    String usuarioMovimiento = AspiranteCN.class.getSimpleName(); 
    Date fecha = new Date(); 
    aspirante.setCodigoAlumno(aspiranteDTO.getCodigoUniversitario()); 
    aspirante.setNombre(aspiranteDTO.getNombre()); 
    aspirante.setApellidoPaterno(aspiranteDTO.getPrimerApellido()); 
    aspirante.setApellidoMaterno(aspiranteDTO.getSegundoApellido()); 
    aspirante.setUsuarioMovimiento(usuarioMovimiento); 
    aspirante.setFechaMovimiento(fecha); 

    Solicitud solicitud = new Solicitud(aspirante.getSolicitudId()); 
    solicitud.setAspirante(aspirante); 
    solicitud.setSolicitudId(aspirante.getSolicitudId()); 
    solicitud.setOfertaId(aspiranteDTO.getOfertaAcademica()); 
    solicitud.setPeriodoId(aspiranteDTO.getPeriodo()); 
    solicitud.setAportacion(aspiranteDTO.getAportacionVoluntaria()); 
    solicitud.setFechaMovimiento(fecha); 
    solicitud.setUsuarioMovimiento(usuarioMovimiento); 
    aspirante.setSolicitud(solicitud); 

    .... 

    aspiranteDAO.persist(aspirante); 

}

和此錯誤

內部異常:java.sql.SQLException中:ORA -01400:無法將NULL插入(「RPINGRE」。「ARE_SOLI」。「ARE_SOLI_SOLIASPI_ID」)

This i小號Aspirante實體(片段)

@Entity 
@Table(name = "ARE_SOLIASPI", catalog = "", schema = "RPINGRE") 
public class Aspirante implements Serializable { 
private static final long serialVersionUID = 1L; 
@SequenceGenerator(sequenceName = "RPINGRE.SQ_ARE_SOLIASPI", 
name = "RPINGRE.SQ_ARE_SOLIASPI", 
initialValue = 1, 
allocationSize = 1) 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "RPINGRE.SQ_ARE_SOLIASPI") 
@Id 
@Basic(optional = false) 
@Column(name = "ARE_SOLIASPI_ID") 
private Long solicitudId; 
@Basic(optional = false) 
@Column(name = "ARE_SOLIASPI_CODIGO") 
private String codigoAlumno; 
@Basic(optional = false) 
@Column(name = "ARE_SOLIASPI_NOMBRE") 
private String nombre; 
@Column(name = "ARE_SOLIASPI_APE_PATERNO") 
private String apellidoPaterno; 
@Column(name = "ARE_SOLIASPI_APE_MATERNO") 
private String apellidoMaterno; 
@Basic(optional = false) 
@Column(name = "ARE_SOLIASPI_MOV_USUARIO") 
private String usuarioMovimiento; 
@Basic(optional = false) 
@Column(name = "ARE_SOLIASPI_MOV_FECHA") 
@Temporal(TemporalType.TIMESTAMP) 
private Date fechaMovimiento; 
@OneToOne(cascade = CascadeType.ALL, mappedBy = "aspirante", fetch = FetchType.LAZY) 
private Solicitud solicitud; 

Solicitud實體(片段)

@Entity 
@Table(name = "ARE_SOLI", catalog = "", schema = "RPINGRE") 
public class Solicitud implements Serializable { 

private static final long serialVersionUID = 1L; 
@Id 
@Basic(optional = false) 
@Column(name = "ARE_SOLI_SOLIASPI_ID") 
private Long solicitudId; 
@Basic(optional = false) 
@Column(name = "ARE_SOLI_MOV_USUARIO") 
private String usuarioMovimiento; 
@Basic(optional = false) 
@Column(name = "ARE_SOLI_MOV_FECHA") 
@Temporal(TemporalType.TIMESTAMP) 
private Date fechaMovimiento; 
@Column(name = "ARE_SOLI_PERIODO_ID") 
private String periodoId; 
@Column(name = "ARE_SOLI_OFERTA_ID") 
private Long ofertaId; 
@Column(name = "ARE_SOLI_APORTACION") 
private Long aportacion; 
@JoinColumn(name = "ARE_SOLI_SOLIASPI_ID", referencedColumnName = "ARE_SOLIASPI_ID", insertable = false, updatable = false, nullable = false) 
@OneToOne(optional = false, fetch = FetchType.LAZY) 
private Aspirante aspirante; 

..... 
} 

回答

-1

的ORA-01400錯誤說,你正試圖插入NULL到定義爲NOT NULL列。 我建議你ether在列上設置一個默認值或讓你的代碼在你執行INSERT之前確保NOT NULL列有數據(或者在你的INSERT語句中使用NVL函數)

+0

用戶正在詢問如何解決onetoone錯誤。至於錯誤是顯而易見的,你的解釋是可消耗的 – eduyayo