Java 一对多hibernate映射中未更新外键
用户类 当我尝试将数据插入用户表和设备信息表时,数据被插入,但设备信息表的外键列并没有用用户表的主键更新 Hibernate版本:4.3.6.FinalJava 一对多hibernate映射中未更新外键,java,hibernate,Java,Hibernate,用户类 当我尝试将数据插入用户表和设备信息表时,数据被插入,但设备信息表的外键列并没有用用户表的主键更新 Hibernate版本:4.3.6.Final Spring版本:4.3.1如果在持久化之前没有在deviceInfo对象中设置用户对象,代码应该如下所示: user.setDeviceInfo(setOfDeviceInfo); deviceInfo.setUser(user); session.save(user); 我认为您的实体设备信息中缺少@manytone映射 User.j
Spring版本:4.3.1如果在持久化之前没有在deviceInfo对象中设置用户对象,代码应该如下所示:
user.setDeviceInfo(setOfDeviceInfo);
deviceInfo.setUser(user);
session.save(user);
我认为您的实体设备信息中缺少@manytone映射 User.java
在保存之前,您是否正在执行此操作?DeviceInfo.setUserId(userId.getId());当我保存用户时,它会生成userId并在设备信息表中内部休眠保存该id,但它不会更新session.save(user);Hibernate:插入用户(推送通知状态、访问令牌、电子邮件、名字、姓氏、手机号、OTP、密码、配置文件隐藏状态、注册日期时间、社交ID)值(?,,,,,,,,,,,?,,?)Hibernate:插入设备信息(设备密钥、设备令牌、设备类型、纬度、经度、FK用户ID)值(?,?,?,,?,,?,?)首先保存用户,对吗?session.save(user),然后获取用户并设置为设备。
@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;
}
user.setDeviceInfo(setOfDeviceInfo);
deviceInfo.setUser(user);
session.save(user);
@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;
}