2016-09-04 6 views
0

私は非常に冬眠するのがとても新しいです。私は、ユーザーと車両のような2つのエンティティを作成しました。休止状態で1対多のマッピングテーブルを作成できません

@OneToMany 
@JoinColumn(name="Vehicle_id") 
Collection<Vehicle> vehicle = new ArrayList<>(); 

この

UserInfo user = new UserInfo(); 
user.setUsername(username); 
user.setPassword(password); 
user.setDob(dob); 

Vehicle vehicle = new Vehicle(); 
vehicle.setVehicleName("AUdi"); 
user.getVehicle().add(vehicle); 

Vehicle vehicle2 = new Vehicle(); 
vehicle2.setVehicleName("BMW"); 
user.getVehicle().add(vehicle2); 

SessionFactory sessionfactory = new AnnotationConfiguration().configure().buildSessionFactory(); 
Session session = sessionfactory.openSession(); 
session.beginTransaction(); 
session.save(user); 
session.save(vehicle); 
session.save(vehicle2); 
session.getTransaction().commit(); 
session.close(); 

のようにテーブルに追加することしかし、私は取得していますが

Hibernate: insert into UserInformation (user_name, DOB) values (?, ?) 
Hibernate: insert into Vehicle (vehicleName) values (?) 
Hibernate: insert into Vehicle (vehicleName) values (?) 
Hibernate: update Vehicle set Vehicle_id=? where vehicleID=? 
Hibernate: update Vehicle set Vehicle_id=? where vehicleID=? 

のような結果だから、私は

insert into User_vehicle(User_id,vehicle_id) Values (?,?) 

のように作成された何のテーブルがありませんテーブル名を取得していないUser_vehicle in db。

私の質問を理解していただきたいと思います。

答えて

1

@OneToManyの関連付けに@JoinColumnを指定しました。したがって、多くの側に外部キー列があります。それが実際に推奨されるアプローチです。

あなたが@OneToMany関連のテーブルを結合を使用する必要がある場合は、あなたが@JoinColumnを省略し、必要に応じて、テーブルと列のデフォルト名を上書きする@JoinTableを指定する必要があります。

@OneToMany 
@JoinTable(
    name="User_Vehicle", 
    joinColumns = @JoinColumn(name = "User_Id"), 
    inverseJoinColumns = @JoinColumn(name = "Vehicle_Id") 
) 
Collection<Vehicle> vehicles = new ArrayList<>(); 
+0

はあなたに氏ドラガンB.それに感謝今はうまくいっています。 –

関連する問題