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;
}