2016-09-04 2 views
0

Я совершенно новый для спящего режима. Я создал два объекта, таких как пользователь и автомобиль, с пользователем, имеющим отношение «один к большому» с транспортным средством.Невозможно создать таблицу отображения одного для многих в спящем режиме

@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 в дБ.

Надеюсь, вы поймете мой вопрос.

ответ

1

Вы указали @JoinColumn для ассоциации @OneToMany, таким образом, на многих сторонах будет столбец с внешним ключом. На самом деле это рекомендуемый подход.

Если вам необходимо использовать таблицу соединения для @OneToMany ассоциации, то вам необходимо опустить @JoinColumn и дополнительно указать @JoinTable переопределить имена по умолчанию для таблицы и столбцов:

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

Благодарю вас, господин Драган В. теперь работает отлично. –

Смежные вопросы