[英]in OneTOMany mapping foreign key is inserted as null in Hibernate-MySQL
I am using Hibernate 4.3
and MySQL
我正在使用
Hibernate 4.3
和MySQL
There two tables 1. User
and 2. Vehicle
有两个表
1. User
和2. Vehicle
I have inserted User's primary
key
in vehicle
as a foreign key
using hibernate
annotation
mapping
shown in follwing code 我使用后面的代码中显示的
hibernate
annotation
mapping
将User的primary
key
作为foreign key
插入到vehicle
中
User class 用户类
@Entity
@Table(name = "USER_DETAILS")
public class UserDetails {
@Id
@Column (name="USER_ID")
private int userId;
@Column (name="USER_NAME")
private String userName;
@OneToMany(mappedBy="user")
private Collection<Vehicle> vehicle = new ArrayList<Vehicle>();
public int getUserId() {
return userId;
}
public Collection<Vehicle> getVehicle() {
return vehicle;
}
public void setVehicle(Collection<Vehicle> vehicle) {
this.vehicle = vehicle;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
Vehicle class 车辆类
@Entity
public class Vehicle {
@Id
private int vehicleId;
private String vehicleName;
@ManyToOne
@JoinColumn(name="USER_ID")
private UserDetails user;
public UserDetails getUser() {
return user;
}
public void setUser(UserDetails user) {
this.user = user;
}
public String getVehicleName() {
return vehicleName;
}
public void setVehicleName(String vehicleName) {
this.vehicleName = vehicleName;
}
public int getVehicleId() {
return vehicleId;
}
public void setVehicleId(int vehicleId) {
this.vehicleId = vehicleId;
}
}
Main class 主要课程
public class HibernateMain {
public static void main(String[] args) {
UserDetails user = new UserDetails();
user.setUserId(1);
user.setUserName("Second user");
Vehicle vehicle = new Vehicle();
vehicle.setVehicleId(1);
vehicle.setVehicleName("car");
Vehicle vehicle1 = new Vehicle();
vehicle1.setVehicleId(2);
vehicle1.setVehicleName("jeep");
user.getVehicle().add(vehicle);
user.getVehicle().add(vehicle1);
Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
SessionFactory sf = cfg.buildSessionFactory(new ServiceRegistryBuilder()
.applySettings(cfg.getProperties()).build());
Session session = sf.openSession();
session.beginTransaction();
session.save(user);
session.save(vehicle);
session.save(vehicle1);
session.getTransaction().commit();
session.close();
}
}
Output: 输出:
mysql> select * from user_details;
+---------+-------------+
| USER_ID | USER_NAME |
+---------+-------------+
| 1 | Second user |
+---------+-------------+
mysql> select * from vehicle;
+-----------+-------------+---------+
| vehicleId | vehicleName | USER_ID |
+-----------+-------------+---------+
| 1 | car | NULL |
| 2 | jeep | NULL |
+-----------+-------------+---------+
Why User_ID
in vehicle
table is going null
. 为什么
vehicle
表中的User_ID
为null
。 It should be 1
. 它应该是
1
。 Thanks for help. 感谢帮助。
在保存车辆对象之前,您需要明确说出vehicle.setUser
。
change 更改
Session session = sf.openSession();
session.beginTransaction();
session.save(user);
session.save(vehicle);
session.save(vehicle1);
session.getTransaction().commit();
session.close();
to 至
Session session = sf.openSession();
session.beginTransaction();
session.save(vehicle);
session.save(vehicle1);
user.getVehicle().add(vehicle);
user.getVehicle().add(vehicle1);
session.save(user);
session.getTransaction().commit();
session.close();
And remove the association from here 并从此处删除关联
vehicle1.setVehicleId(2);
vehicle1.setVehicleName("jeep");
user.getVehicle().add(vehicle); <--- remove
user.getVehicle().add(vehicle1); <--- remove
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.