Pessoal eu sei que esse tema já foi bastante discutido e criado vários tópicos a respeito, porém continuo com alguns problemas e algumas dúvidas.
Eu posso uma tabela com 3 campos formando uma chave composta (banco de dados legado).
Eu gostaria de saber se estou fazendo certo, e porque a busca nao funciona…
Segue a minha classe separada com a chave composta:
//imports omitidos
@Embeddable
public class ConvenioTlfHistoricoPK implements Serializable{
private long idaut;
private String tarjeta;
@Column(name="FECHA_NEGOCIO")
private Date fechaNegocio;
private static final long serialVersionUID = 1L;
public ConvenioTlfHistoricoPK() {
super();
}
//.....
Abaixo segue a minha entidade.
@Entity
@Table(name="convenio.tlf_historico")
public class ConvenioTlfHistorico extends Transacao implements Serializable {
@EmbeddedId
private ConvenioTlfHistoricoPK pk;
@ManyToOne
@JoinColumns(
@JoinColumn(name="TARJETA",referencedColumnName="CARTAO", insertable=false, updatable=false)
)
private Cartoes cartao;
@Column(name="DATA_TRANSFERENCIA")
private Date dataTransferencia;
@Column(name="PERIODO_FATURADO")
private Integer periodoFaturado;
public ConvenioTlfHistoricoPK getPk() {
return pk;
}
public void setPk(ConvenioTlfHistoricoPK pk) {
this.pk = pk;
}
public Long getIdaut() {
return getPk().getidaut();
}
public void setIdaut(Long idaut) {
getPk().setidaut(idaut);
}
public Date getDataHoraLocal() {
return getPk().getfechaNegocio();
}
public void setDataHoraLocal(Date fechaNegocio) {
getPk().setfechaNegocio(fechaNegocio);
}
//Vários outros campos e relacionamentos
Eu gostaria de saber se para inserir algum registro é dessa forma mesmo:
ConvenioTlfHistorico convenioTlfHistorico = new ConvenioTlfHistorico();
ConvenioTlfHistoricoPK convenioTlfHistoricoPK = new ConvenioTlfHistoricoPK();
convenioTlfHistorico.setPk(convenioTlfHistoricoPK);
convenioTlfHistorico.setDataTransferencia(new Date());
convenioTlfHistorico.setPeriodoFaturado(200606);
e a pesquisa é dessa forma mesmo né?
List<ConvenioTlfHistorico> lista = (List<ConvenioTlfHistorico>) facade.executeQueryList
("from ConvenioTlfHistorico t where t.pk.tarjeta='6278800000126222'");
System.out.println(lista.size());