簡體   English   中英

ORA-01400 無法在一對一關系中插入 null 錯誤

[英]ORA-01400 cannot insert null error in one to one relationship

我有這個代碼

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”.“AREIASPISOLID”)

這是Aspirante Entity(片段)

@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;

.....
}

嘗試將GenerationType.SEQUENCE更改為GenerationType.Auto

ORA-01400 錯誤表示您正在嘗試將 NULL 插入定義為 NOT NULL 的列中。 我建議您在列上設置默認值或讓您的代碼確保 NOT NULL 列在您執行 INSERT 之前有數據(或在您的 INSERT 語句中使用 NVL function)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM