Reputation: 148
User class
@Entity
@Table(name="user")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="PK_USER_ID")
private Integer userId;
@Column(name="FIRST_NAME")
private String firstName;
@Column(name="LAST_NAME")
private String lastName;
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name="FK_USER_ID",referencedColumnName="PK_USER_ID")
private Set<DeviceInfo> deviceInfos;
}
DeviceInfo
@Entity
@Table(name="device_info")
public class DeviceInfo {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="DEVICE_ID")
private Integer deviceId;
@Column(name="DEVICE_KEY")
private String deviceKey;
@Column(name="FK_USER_ID")
private Integer userId;
}
When i try to insert data into user table and device_info table, data is inserted but foreign key column of device_info table not updated with primary key of user table.
Hibernate version:4.3.6.Final Spring version :4.3.1
Upvotes: 2
Views: 3297
Reputation: 426
I think @ManyToOne mapping is missing in your entity DeviceInfo
@Entity
@Table(name="user")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="PK_USER_ID")
private Integer userId;
@Column(name="FIRST_NAME")
private String firstName;
@Column(name="LAST_NAME")
private String lastName;
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY, mappedBy = "user")
private Set<DeviceInfo> deviceInfos;
}
@Entity
@Table(name="device_info")
public class DeviceInfo {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="DEVICE_ID")
private Integer deviceId;
@Column(name="DEVICE_KEY")
private String deviceKey;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PK_USER_ID", nullable = false)
private User user;
}
Upvotes: 0
Reputation: 78
Have you missed setting user Object in deviceInfo object before persisting, code should look like:
user.setDeviceInfo(setOfDeviceInfo);
deviceInfo.setUser(user);
session.save(user);
Upvotes: 1