Chave composta - Duas anotações @Id

Qual a diferenca de fazer a utilização de chaves composta com @EmbbededId , @IdClass e 2 @Ids?

fiz um exemplo assim:

[code]
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

@Id
private String logradouro;[/code]

e funcionou… alguem sabe se pode usar 2 @Ids? Qual a vantagem e desvantagem de cada?

@Id apenas é para id simples, um int or exemplo.

Os outros são para classes compostas. Aqui você pode ver cada um aplicado e explicado: JPA: Mini Livro - Primeiros passos e conceitos detalhados.

Sim, mas coloquei dois @Id e funcionou como chave composta, deixei até para criar automaticamente as tabelas pra ver oq ele fazia, e ele criou os dois campos como chave composta. Não deveria dar algum erro, falando que precisa da anotação @IdClass ou algo do tipo?

Achei estranho pq ele simplesmente funcionou

[quote=igor_ks]Sim, mas coloquei dois @Id e funcionou como chave composta, deixei até para criar automaticamente as tabelas pra ver oq ele fazia, e ele criou os dois campos como chave composta. Não deveria dar algum erro, falando que precisa da anotação @IdClass ou algo do tipo?[/quote]Creio que isso varia da implementação viu. Tem cada macumba que elas fazem… O.o

Cara,

Este link pode esclarecer algumas dúvidas.

http://en.wikibooks.org/wiki/Java_Persistence/Embeddables