在测试我的实体时,我得到错误外键没有父;FKF7EC361BFEA0E826 表:DEVICE_DEVICE_PRESETS
我正在通过在我的设备类构造函数中创建实体进行测试,当我没有创建存储的预设实体并将其添加到我的设备预设实体时会发生错误。如果我创建存储的预设实体并将其添加到我的设备实体中,则代码运行良好。
(1)-当存储的预设实体通过如下所示的显式外键列链接时会发生错误 (stored_preset_num)
(2)- 当实体共享相同的主键值时不会发生错误
有人可以帮我理解为什么当仅通过外键链接时它会强制实体存在而不是仅仅强制关系?为什么我需要使用 (1) 而不是 (2) 创建存储的预设实体
DEVICE
@OneToMany(cascade=CascadeType.ALL)
@JoinColumns({
@JoinColumn(name="device_id",referencedColumnName="device_id"),
@JoinColumn(name="node_id",referencedColumnName="node_id"),
@JoinColumn(name="instance_id",referencedColumnName="instance_id")
})
@LazyCollection(LazyCollectionOption.FALSE)
private List<DevicePreset> devicePresets;
DEVICE PRESETS
@ManyToOne
private Device device;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumns({ @JoinColumn(name="stored_preset_num",referencedColumnName=" stored_preset_num",insertable=false,updatable=false)
})
private StoredPreset storedPreset;
存储的预设
@OneToOne
private DevicePreset devicePreset;