Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一对多hibernate映射中未更新外键_Java_Hibernate - Fatal编程技术网

Java 一对多hibernate映射中未更新外键

Java 一对多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

用户类

当我尝试将数据插入用户表和设备信息表时,数据被插入,但设备信息表的外键列并没有用用户表的主键更新

Hibernate版本:4.3.6.Final
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;
}