[RESOLVIDO] :: Mapeamento de chave composta no hibernate usando annotation

Galera,

Estou a algum tempo sem desenvolver nada do ZERO com hibernate e por isso estou com a seguinte dúvida:

Estou mapeando meus objetos e gostaria de fazer o seguinte relacionamento o qual não estou conseguindo:

@Entity
class MovieSession {
	@EmbeddedId
	private MovieSessionPK id;
}

@Entity
class Movie {
	@Id
	private Long id;
}

@Entity
class Room {
	@Id
	private Long id;
}

@Embeddable
class MovieSessionPK {
	
	@Column(name="room_id")
	private Room room;
	
	@Column(name="movie_id")
	private Movie movie;
	
}

Resumindo eu gostaria de que a minha tabela moviesession tivesse uma chave composta das colunas room_id e movie_id …

Eu tentei já algumas alternativas que encontrei no guia de referencia do hibernate annotation, mas até agora não tive sucesso.

Abraço,

Use seu MovieSessionPK com os atributos (i.e. movie_id e room_id) e na entidade Movie faça um relacionamento para as respectivas entidades e crie uma FK para elas!

thiago,

Mas foi como eu fiz … somente a parte que você diz “fazer um relacionamento” e “fazer uma fk” que esta meio obscuro.

Até pq sei que conceitualmente esse relacionamento vai existir na base, só não sei como fazer com que o hibernate entenda isso …

Sei que poderia mapear minha solução de outra forma, mas eu gostaria de fazer desta forma para tirar o máximo de proveito do OO.

Eu não achei nenhum exemplo ou situação onde no meu objeto embeded eu tenho 2 entidades persistentes … é sempre com objetos literais.

Consegui …

@Entity  
class MovieSession {  
	@EmbeddedId  
    private MovieSessionPK id;
}  

@Entity  
class Movie {  
	@Id  
	private Long id;  
}  

@Entity  
class Room {  
	@Id  
	private Long id;  
}  

@Embeddable  
class MovieSessionPK {  

	@ManyToOne
	@JoinColumn(name="room_id", nullable=false)
	private Room room;
	
	@ManyToOne
	@JoinColumn(name="movie_id", nullable=false)
    private Movie movie;  
}