Хорошо,
Я новичок в 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]
спасибо.