2016-06-15 12 views
0

2つのクラス間の多対多関係を作成したいと思います。HibernateのManyToMany realtionが正しく動作しません。

@Entity 
public class Room { 

@Id 
@GeneratedValue 
private long number; 
private boolean state; 

@ManyToMany(mappedBy = "roomList") 
private List<Exhibition> exhibitionList; 

public Room(){ 

} 

public Room(int number, boolean state) { 
    super(); 
    this.number = number; 
    this.state = state; 
} 

...getters and setters... 

とクラス "展":

@Entity 
public class Exhibition { 

@Id 
@GeneratedValue 
private long Id; 
private String title; 
private Date dateOfOpening; 
private Date dataOfEnding; 
private double price; 
private String description; 

@ManyToMany 
@JoinTable(name="EXHIBITION_ROOM") 
private List<Room> roomList; 

public Exhibition(){ 

} 

public Exhibition(String title, Date dateOfOpening, Date dataOfEnding, double price, String description) { 
    super(); 
    this.title = title; 
    this.dateOfOpening = dateOfOpening; 
    this.dataOfEnding = dataOfEnding; 
    this.price = price; 
    this.description = description; 
} 

...geters, setters... 

私は関係多対多を実行しようとしました、 "ルーム" - は、私はこのようなクラスを持っています。私はJPA 2.1のJavaDocの例をHibernateのドキュメントで取り上げましたが、うまくいきませんでした(IDがない空のテーブル "EXHIBITION_ROOM"が作成されました)。 OneToOneのような他のすべての関係は正常に機能し、継承も正常に機能します。私は何をすべきか?

答えて

0

あなたは正しい軌道に乗っているが、あなたはそれを行う方法を、テーブルによって接合すべきroomListをない言っています。例えば

@ManyToMany 
@JoinTable(name="EMP_PROJ", 
     [email protected](name="EMP_ID"), 
     [email protected](name="PROJ_ID")) 

:で、具体的にこの例で 見here

さらに、2つのエンティティをリンクするIDを指定する必要があります。私はあなたのテーブルの名前を知らないよう あなたのケースでは、

@JoinTable(name="EXHIBITION_ROOM", 
[email protected](name="EXHIBITION_ID"), 
[email protected](name="ROOM_NUMBER")) 

名のわからないようなものになります。しかし、これを試してみてください。ちょっとした名前で遊んでみてください。

関連する問題