O motivo é pq o provedor de persistencia não tem como comparar + de 1 propriedade, então isso tem que ser feito explicitamente por vc...
O objeto PK que vc criar tem que implementar corretamente os métodos equals/hashCode para o funcionamento correto da aplicação...
é uma exigencia do JPA que toda entidade tenha uma chave primaria única... o Netbeans mapea a classe totalmente em separado, o que na minha opinião é ruim, pois vc acaba tendo que fazer algo como
entrada.getId().getPessoa();
entrada.getId().getHorario();
Forma que o netbeans mapea uma calsse dessas
você pode usar uma abordagem bem mais facil, no uso da classe, que é o @IdClass, com ele vc cria o objeto em separado, que mostra para o provedor de persistência como comparar 2 objetos, mas não estraga seu objeto
nesta segunda abordagem vc pode usar direto
entrada.getPessoa();
entrada.getHorario();
pois a classe é definida assim
vc continua tendo que escrever o EntradaPK, porem o objeto Entrada fica mais claro... e o objeto EntradaPK vai existir apenas para informar ao provedor de persistencia como comparar com equals e hashCode... e neste caso do uso de @IdClass o objeto EntradaPK não precisa ser anotado como @Embedable
Ps.: Se não entender equals/hahscode, entra no meu blog na minha assinatura q la tem explicações...
This message was edited 2 times. Last update was at 12/08/2009 22:10:23
|