Hibernate не считает поле для вставки - PullRequest
0 голосов
/ 24 октября 2018

Хорошо,

Я новичок в HIbernate, и у меня возникла проблема, и мне нужна поддержка, чтобы попытаться ее решить.

У меня есть класс Client, этот класс содержитсоставной ключ.

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

спасибо.

...