Estratégia de mapeamento de Relacionamentos (@ManyToOne, etc) dentro da classe chave pk?

Estou vendo por ai que algumas pessoas usam anotações de mapeamento @ManyToOne, @OneToMany, etc dentro das classes que definem a chave primaria composta…mas eu nunca vi um livro de JPA 1.0 falando sobre o assunto. Pelo que parece no JPA 1.0, as anotações de relacionamento só podem ser usadas dentro das entidades…
Alguem ja viu :?:
Aonde :?:

Nossa, onde você viu isso?

Eu li livros do JPA 2 e não vi isso, ou pelo menos não reparei.

Vi varias pessoas aqui no forum fazendo e amigo meu tava fazendo tb…Eu tb ja li varios livros de JPA 1.0 e nunca vi ninguém indicar tal pratica…pior que algumas casos até da certo…

Fiquei curioso também :shock: Até porquê se falarmos de formas normais e modelo de dados, não faria sentido algum (não pra mim pelo menos) :shock: Como seria um caso de uso?

Mas foi justamente meu pensamento…não faz nenhum sentido na impedancia de objeto/relacional…mas veja ai um exemplo:

[code]@Embeddable
public class ProdutoLojaId implements java.io.Serializable {

// Fields

@ManyToOne(cascade = {CascadeType.MERGE}, fetch=FetchType.EAGER)
private Loja loja;

@ManyToOne(cascade = {CascadeType.MERGE}, fetch=FetchType.EAGER)
private Produto produto;[/code]

[code]class EmpresaClientePK implements Serializable {

private static final long serialVersionUID = -6197593475314743037L;

@ManyToOne
private Cliente cliente;

@ManyToOne
private Empresa empresa; [/code]
Fonte - http://www.guj.com.br/java/41606-hibernate-annotations---manytomany-com-atributos

Pois é. Bizarro.

Pensando aqui com meus botões eu não vejo por que não funcionaria. Mas imagino eu ser uma má pratica do caramba.

Vc tem um relacionamento que pertence à classe mas que está “escondido”! O.o

Meu colega fez um destes com JPA 1.0 com Hibernate 3.5 funcionou legal…mas quando eu vi achei bem estranho…enfim, não achei referencia nenhuma…Na documentação de todas as anotações do JPA 2 diz:

[quote]The ManyToMany annotation may be used within an embeddable class contained within an entity class to specify a relationship to a collection of entities. [/quote] Fonte - http://docs.oracle.com/javaee/6/api/javax/persistence/ManyToMany.html
Mas no javadoc do JPA 1 não diz nada, mas tb não diz nada contra…veja - http://docs.oracle.com/javaee/5/api/javax/persistence/ManyToMany.html
kkkkkkkkk

hehe, boa. Eu acho que entendi mais ou menos, no mínimo fizeram isso ai pra facilitar na hora da busca :?: Dependendo de como estiver mapeado do lado Loja/Produto, você teria acesso direto para aquelas linhas no banco, sem necessidade de fazer pesquisa :?: :?: :?:

Tomara que isso nunca vá para um ambiente de produção :shock:

É cara, eu não vejo vantagem alguma viu. O.o

Eu acho que permite pois eu entende que uma classe Embendable é como se fosse um atributo da classe.

Mas não acho boa prática viu! Não mesmo.

achei bem pertinente esse assunto…

tenho um projeto aqui usando hibernate (não lembro qual versão mas é algum relativo a jpa 1), onde tem tabela que tem chave primária composta e inclusive mais de um destes atributos da chave primária também é chave estrangeira para outras tabelas… eu tinha usado aquele gerador das entidades do hibernate tools e tinha gerado a classe de PK com os atributos como long na classe da chave composta e na classe da entidade em si também tinha estes atributos porém como objetos das entidades a qual referenciam, ou seja, com as anotações de relacionamento…

eu entendo que colocar somente o objeto da entidade relacionada apenas na classe da chave composta (sem ter na classe da entidade) seja uma forma de economizar código e manter assim tanto o relacionamento quanto a chave composta completa, mas penso nisso como uma péssima prática pois esconde oa tributo importante. Da forma como ficou eu teria que após setar objeto relacionado e acredito que setar o id também na classe de pk mas para facilitar eu alterei o setter do objeto relacionado para nele setar o id do objeto sendo setado também no objeto da pk, o que facilita.