Pessoal estou com uma dúvida na utilização de chaves compostas em JPA. não encontrei nenhum tópico que tratava disso e resolvi iniciar uma discussão sobre.
O que me dizem sobre?
Pessoal estou com uma dúvida na utilização de chaves compostas em JPA. não encontrei nenhum tópico que tratava disso e resolvi iniciar uma discussão sobre.
O que me dizem sobre?
IdCass - Te dá um pouco de trabalho, mas deixa mais claro quais chaves você quer da classe por exemplo, tenho duas classes Jogador e TimeId. Jogador poderá ser buscado pelo time, nome e id
@Entity
@IdClass(TimeId.Class)
public class Jogador {
@Id
private String time;
@Id
private String nome;
@Id
private int id;
}
@Embeddable //não virara entidade no db
public class TimeId implements Serializable {
private String time;
private String nome;
public TimeId( ) { }
public TimeId(String time, String nome) { super( ); //omitido
}
//omitido
}
EmbeddedId com EmbeddedId é um pouco diferente, eu só preciso indicar que o TimeId terá as chaves compostas do Jogador ou seja, não há necessidade de colocar os ids no Jogador.
public class Jogador {
@EmbeddedId
private TimeId id;
}
Outro exemplo de classes para ficar mais claro.
Embedded - Indica que os atributos da classe indicada será anexada a classe onde está sendo chamada
Embeddable - Indica que a classe não virara uma entidade no seu db
@Entity
public class Usuario {
private String nome;
@Embedded
private Endereco endereco; //Atributos da classe Endereco será anexada ao usuário, deixando a classe mais limpa.
//omitido
}
@Embeddable //Indica que a classe não virara uma Entidade no seu db
public class Endereco {
}
Coloquei outras anotações, porque eles são relacionados.
Muito obrigado pela resposta, me ajudou consequentemente dezena de pessoas com a mesma dúvida.
Grato
Opa, estamos ai para isso.
No caso não tera como escapar de um estudo profundo, Recomendo esse ótimo livro da casa do código. O único problema que você vai enfrentar e que esse livro não aborda é no caso @ManyToMany. Com o resto dá para se virar de boa.
JPA é uma mão na roda <3
Eu tenho o JSF e JPA da casa do código. Muito bom