首页 > 解决方案 > Hibernate 不考虑要插入的字段

问题描述

好的,

我是 HIbernate 的新手,我遇到了一个问题,我需要支持来尝试解决它。

我有一个客户端类,这个类包含复合键。

@Entity
@Table(name = "Clientes")
@IdClass(ClientePK.class)
public class Cliente implements Serializable {

    //@EmbeddedId
    //private ClientePK clientePK;
    @Id
    @Column(name = "Id_Cliente", nullable = false, length = 15)
    private long idCliente;

    @Id
    @Fetch(FetchMode.SELECT)
    @ManyToOne
    @JoinColumn(name = "Loja", nullable = false)
    private Loja loja;

}

public class ClientePK implements Serializable {

    private long idCliente;
    private Loja loja;
}

然后我有一个 ClientClass 类也包含复合键

@Entity
@Table(name = “Clientes_Historicos”)
@IdClass(ClienteHistoricoPK.class)
public class ClienteHistorico implements Serializable {

    @Id
    @Resolvable(colName = "Id. Cliente Histórico")
    @Column(name = "Id_Cliente_Historico", nullable = false)
    private Long idClienteHistorico;

    @Id
    @Fetch(FetchMode.SELECT)
    @ManyToOne
    @JoinColumn(name = "Loja", nullable = false)
    private Loja loja;

    @Resolvable(colName = "Cliente")
    @Fetch(FetchMode.SELECT)
    @JoinColumns({
        @JoinColumn(name = "id_cliente", referencedColumnName = "Id_Cliente", nullable = false, insertable = true)
        ,
        @JoinColumn(name = "loja", referencedColumnName = "loja", nullable = false, insertable = false, updatable = false)
    })
    @MapsId("loja")
    @ManyToOne(optional = false)
    private Cliente cliente;

}

我使用了@MapsId 注解(“store”)来指示主键的 store 字段应该与客户端连接本身的 FK 字段一起使用。

发生在 ClientHistorico 中执行插入时,未考虑插入客户端字段。

Informações:   Hibernate: insert into Clientes_Historicos (Data, Tipo, Usuario, Id_Cliente_Historico, Loja) values (?, ?, ?, ?, ?)
WARN:   SQL Error: 1400, SQLState: 23000
ERROR:   ORA-01400: não é possível inserir NULL em ("MARTINELLO"."CLIENTES_HISTORICOS"."ID_CLIENTE")

Informações:   HHH000010: On release of batch it still contained JDBC statements
ERROR:   HHH000346: Error during managed flush [org.hibernate.exception.ConstraintViolationException: could not execute statement]

谢谢你。

标签: javahibernatejpajpa-2.0composite-primary-key

解决方案


推荐阅读