JPA problema com Chave Composta

0 respostas
gugaa_df

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());
Criado 22 de janeiro de 2009
Respostas 0
Participantes 1