[英]Getting Null in Join Column in Hibernate when using OneToMany mapping
When using onetomany
mapping with mappedby
I'm getting null
in column of uid
of vehicle
table. 当将
onetomany
映射与mappedby
一起使用时,我在vehicle
表的uid
列中得到null
。
One User
can have many vehicle
s so OneToMany
mapping used .. 一个
User
可以拥有许多vehicle
因此使用了OneToMany
映射。
Vehicle
table should contain reference of user table id
.. Vehicle
表应包含user table id
引用。
Here I'm getting null
under uid
column when Vehicle
table is displayed .It should contain value of user id
. 在这里,当显示
Vehicle
表格时,在uid
列下得到null
,它应该包含user id
值。 Without mappedby
, it is working fine. 没有
mappedby
,它工作正常。
@Entity
@Table(name="User_Details")
public class UserDetails {
private long uid;
@Column(name="fname")
private String name;
private Set<Vehicle> vehicle=new HashSet<Vehicle>();
public UserDetails() {
}
public UserDetails(String name) {
this.name = name;
}
@Id
@Column(name="uid")
@GeneratedValue
public long getUid() {
return uid;
}
public void setUid(long uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToMany(mappedBy="user",cascade = CascadeType.ALL)
public Set<Vehicle> getVehicle() {
return vehicle;
}
public void setVehicle(Set<Vehicle> vehicle) {
this.vehicle = vehicle;
}
}
@Entity
@Table(name="Vehicle")
public class Vehicle {
private long id;
@Column(name="vname")
private String name;
private UserDetails user;
public Vehicle() {
}
public Vehicle(String name, UserDetails user) {
super();
this.name = name;
this.user = user;
}
@Id
@Column(name="vid")
@GeneratedValue
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToOne
@JoinColumn(name = "uid") **References UserDetails table**
public UserDetails getUser() {
return user;
}
public void setUser(UserDetails user) {
this.user = user;
}
}
public class App {
public static void main(String\[\] args) {
SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();
Session session=sessionFactory.openSession();
session.beginTransaction();
UserDetails user=new UserDetails();
user.setName("Rohit");
Vehicle vehicle1=new Vehicle();
vehicle1.setName("Hyundai1");
Vehicle vehicle2=new Vehicle();
vehicle2.setName("Maruti1");
Set<Vehicle> set = new HashSet<Vehicle>();
set.add(vehicle1);
set.add(vehicle2);
user.setVehicle(set);
session.save(user);
session.getTransaction().commit();
session.close();
}**][1]][1]
[1]: https://i.stack.imgur.com/YyhsN.png
Add this to your code 将此添加到您的代码
vehicle1.setUser(user)
vehicle2.setUser(user)
You don't set the owning side (vehicle->user) of the relationship. 您没有设置关系的拥有方(车辆->用户)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.