Porém não funcionou.
Mas a ideia é a mesma desse link
Tenho uma classe usuario e uma profile:
Queria que profile tivesse a mesma chave primária do seu usuário:
Só que não está funcionando, primeiro ele reclamou do mapedBy da classe User, depois se eu retirar o mapedBy, ele cria uma coluna user_id e uma coluna id onde essa ultima é a chave primária.
Veja no exemplo a seguir um mapeamento de Pergunta e Resposta, onde cada pergunta deve
ter apenas uma resposta:
publicclassPergunta{@Id@GeneratedValueprivateLongId;@OneToOne@JoinColumn(name="id",unique=true)privateRespostaresposta;@ColumnprivateStringdescricao;//getter and Setters }publicclassResposta{@Id@GeneratedValueprivateLongId;@OneToOne@JoinColumn(name="id",unique=true)privatePerguntapergunta;@ColumnprivateStringdescricao;//getter and Setters }
Note que quando é feito o relacionamento um pra um é configurado tb para ser único
vai existir um id em Resposta que pode variar, no entanto vc tem uma chave
estrangeira que garante a unicidade.
L
lsjunior
Da uma olhada no @PrimaryKeyJoinColumn e como o colega acima disse, isso é um relacionamento um para um.
B
bartorista
Obrigado pelas respostas:
mas acho que não expliquei direito minha duvida.
Eu gostaria que a classe perfil tivesse como chave primária o id da classe user.
como se a tabela perfil fosse assim:
user_id:
sem a coluna id.
Pesquisando melhor eu descobri que o nome do relacionamento que eu quero fazer é Shared Primary Key ou Primary Foreign Key, acho que agora da para entender melhor minha dúvida.