打开JPA Saving ManyToOne,未设置外键,ConstraintViolationException:无法执行批处理

时间:2017-09-28 16:02:27

标签: java hibernate jpa

请你的帮助.....

我通过JPA工具获得了JPA模型,从表中生成实体。平台Hibernate(JPA 2.1) 我有两张桌子:PerTipoProfesion和PerPersona。 JPA工具,使用复合id

制作表PerTipoProfesion和PerPersona
@Embeddable

public class PerTipoProfesionId implements java.io.Serializable {

    private long idTipoProfesion;
    private long idEmpresa;
.....

    @Column(name = "id_tipo_profesion", nullable = false)
    public long getIdTipoProfesion() {
        return this.idTipoProfesion;
    }

    public void setIdTipoProfesion(long idTipoProfesion) {
        this.idTipoProfesion = idTipoProfesion;
    }

    @Column(name = "id_empresa", nullable = false)
    public long getIdEmpresa() {
        return this.idEmpresa;
    }
}
@Entity

@Table(name = "per_tipo_profesion", schema = "public")  

public class PerTipoProfesion implements java.io.Serializable {

    private PerTipoProfesionId id;
    private EmpEmpresa empEmpresa;
    private String descripcion;
    private String naturalJuridica;
    private Set<PerPersona> perPersonas = new HashSet<PerPersona>(0);

    public PerTipoProfesion() {}

@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "id_empresa", nullable = false, insertable = false, updatable = false)

    public EmpEmpresa getEmpEmpresa() {
        return this.empEmpresa;
    }

@OneToMany(fetch = FetchType.LAZY, mappedBy = "perTipoProfesion")

    public Set<PerPersona> getPerPersonas() {
        return this.perPersonas;
    }

.......

}
@Embeddable

public class PerPersonaId implements java.io.Serializable {

    private long codPersona;
    private long idEmpresa;
....

}
@Entity

@Table(name = "per_persona", schema = "public")

public class PerPersona implements java.io.Serializable {

    private PerPersonaId id;
    private EmpEmpresa empEmpresa;
    private OrgOrganizacionGeografica orgOrganizacionGeografica;
    private OrgPais orgPais;
    private PerActividadEconomica perActividadEconomica;
    private PerTipoEstadoCivil perTipoEstadoCivil;
    private PerTipoProfesion perTipoProfesion;
......

@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumns({

@JoinColumn(name = "id_tipo_profesion", referencedColumnName = "id_tipo_profesion", nullable = false, insertable = false, updatable = false),

@JoinColumn(name = "id_empresa", referencedColumnName = "id_empresa", nullable = false, insertable = false, updatable = false) })

    public PerTipoProfesion getPerTipoProfesion() {
        return this.perTipoProfesion;
    }

}
PerTipoProfesion perTipoProfesion = new PerTipoProfesion();

PerTipoProfesionId perTipoProfesionId = new PerTipoProfesionId();

perTipoProfesionId.setIdEmpresa(idEmpresaNueva);

perTipoProfesionId.setIdTipoProfesion(1L);

perTipoProfesion.setId(perTipoProfesionId);

perTipoProfesion.setDescripcion("OTROS");

perTipoProfesion.setNaturalJuridica("J");

perTipoProfesionServices.addObjeto(perTipoProfesion);

这对于perTipoProfesion持续存在于数据库中

PerPersonaId perPersonaId = new PerPersonaId();

perPersonaId.setCodPersona(1L);

perPersonaId.setIdEmpresa(idEmpresaNueva);


PerPersona perPersona = new PerPersona();

perPersona.setId(perPersonaId);

perPersona.setPerTipoProfesion(perTipoProfesion);

perPersonaServices.addObjeto(perPersona);

我试图坚持perPersona错误

«id_tipo_profesion»中提琴限制不为空

0 个答案:

没有答案