2 Entidades com o mesmo Id?

Ola Galera,
Já estou a um tempo pesquisando isso no google e não acho, entao resolvi postar minha dúvida aqui:

Estou tentando fazer com que uma classe tenha sempre o mesmo Id que a outra, ou seja, que uma classe tenha sua chave primária igual a da outra:
O que eu cheguei mais perto foi desse link aqui:
http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/

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:

[code]public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@OneToOne(cascade=CascadeType.ALL, mappedBy="user")
private Profile profile;

}[/code]

[code]public class Profile implements Serializable{
private static final Logger LOG = Logger.getLogger(Profile.class);

@Id
private Integer id;

@Id Integer id;

@MapsId @OneToOne
@JoinColumn(name = "user_id")
private User user;

[/code]

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.

Alguem sabe como resolver?

Veja no exemplo a seguir um mapeamento de Pergunta e Resposta, onde cada pergunta deve
ter apenas uma resposta:

public class Pergunta {  
      
    @Id  
    @GeneratedValue  
    private Long Id;  
  
    @OneToOne  
    @JoinColumn(name = "id", unique = true)  
    private Resposta resposta;          
          
        @Column  
    private String descricao;  
      //getter and Setters  
}  
  
public class Resposta {  
      
    @Id
    @GeneratedValue
    private Long Id;      
  
    @OneToOne  
        @JoinColumn(name = "id", unique = true)  
    private Pergunta pergunta;    
  
        @Column  
    private String descricao;           
       //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.

Da uma olhada no @PrimaryKeyJoinColumn e como o colega acima disse, isso é um relacionamento um para um.

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.

Uma forma seria usar herança:

@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@Table(name = "pessoa")
public class Pessoa implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "idPessoa")
    private Integer idPessoa;

@Entity
@PrimaryKeyJoinColumn(referencedColumnName="idPessoa")
@Inheritance(strategy=InheritanceType.JOINED)
@Table(name = "aluno")

public class Aluno extends Pessoa{

No caso, a classe aluno já herda a chave primária idPessoa.

Resolvi da seguinte forma:

[code]public class Profile implements Serializable {
private static final Logger LOG = Logger.getLogger(Profile.class);

@Id
@GenericGenerator(name = "myForeignGenerator",
		strategy = "foreign", 
		parameters = { @Parameter(name = "property", value = "user")
})
@GeneratedValue(generator="myForeignGenerator")
@Column(name="user_id")
private Integer id;

@OneToOne
@PrimaryKeyJoinColumn
private User user;[/code]

se alguem tiver uma ideia melhor, por favor postar aqui =)

bartorista,

A classe User continua com a mesma configuracao inicial ??

estou com omesmo problema…