Olá pessoal !
Preciso novamente de ajuda.
Vamos supor que eu tenha duas tabelas (objetos).
TabelaA
id
codigo
nome
etc
TabelaB
Como mapeio no objeto TabelaB pra se relacionar com a TabelaA pelo codigo dela e não pelo id ?
Se eu faço assim na TabelaA:
@ManyToOne
@JoinColumn(name = “codigo”)
private TabelaA tabelaA;
Ele apenas chama essa relação de codigo, mas ele usa o campo id da TabelaA e não o campo codigo.
Ficou difícil de entender o que você quer.
Esse post aqui explica os relacionamentos possíveis: JPA: Mini Livro - Primeiros passos e conceitos detalhados.
Desculpa, pensei q tinha ficado claro 
Tentarei melhorar.
Eu tenho duas tabelas: Gerente e Cliente
A tabela Gerente tem: id, codigo, nome, etc
A tabela Cliente tem: id, nome, etc
Eu quero fazer um relacionamento entre Cliente e Gerente.
Qro q tenha um campo na tabela Cliente q seja relacionado com o codigo da tabela Gerente e não com o id.
Se no Cliente eu fizer:
@ManyToOne
@JoinColumn(name = “codigo”)
private Gerente gerente;
Ele irá criar uma coluna na tabela Cliente, mas ela será ligada com o id da tabela Gerente e não qro isso.
Qro liga-la com o campo codigo da tabela Gerente.
Beleza, agora ficou claro.
Leia o post que ele explica. Veja a parte de Chaves que lá explica como fazer. [=
Eu li oq vc disse, paginas 8 e 9, já q não dá tempo de ler tudo antes de acabar aqui.
Muito bom o mini livro.
Mas só dá pra fazer utilizando outras classes com id ?
Pensei q fosse só um mapeamento entre as duas classes Gerente e Cliente
@Embeddable
public class UsuarioID implements Serializable {
private static final long serialVersionUID = -8312712065749875183L;
private Long id;
private String codigo;
public UsuarioID() {}
//equals e hashcode
}
@Entity
@Table(name = "usuario")
public class Usuario {
@EmbeddedId
private UsuarioID usuarioID;
//etc
}
Por um problema de modelagem que não me permitiram mudar, eu tenho o seguinte:
Tabela Usuario: guarda gerentes e corretores
Tabela Cliente: guarda clientes
Um cliente tem 1 gerente e 1 corretor.
O problema é q a relação do cliente com corretor é feita pelo id do Usuario e a relação entre cliente e gerente é feita
pelo codigo do usuario.
Agora com chave composta, como mapeio cliente com corretor (Usuario.id) e cliente com gerente (Usuario.codigo) ?