繁体   English   中英

Hibernate尝试在外键列中插入null

[英]Hibernate attempting to insert null in foreign key column

我有两个类CaretakerDetails和Devices,两个实体之间存在OneToMany关系,但是当我尝试插入对象时,它抛出以下异常:

无法将值NULL插入表'Emomtracking.dbo.Device_Details'的列'Caretaker_Id'中;

看守班如下:

@Entity
@Table(name = "Caretaker_Details", schema = "dbo", catalog = "Emomtracking")
@DynamicUpdate
public class CaretakerDetails implements java.io.Serializable {

private Integer caretakerId;
private EmomLookup emomLookup;
private String caretakerName;
private Date createdDate;
private String caretakerNumber;
private List<DeviceDetails> deviceDetailses = new ArrayList<DeviceDetails>();

public CaretakerDetails() {
}

public CaretakerDetails(String caretakerName, Date createdDate, String caretakerNumber) {
    this.caretakerName = caretakerName;
    this.createdDate = createdDate;
    this.caretakerNumber = caretakerNumber;
}

public CaretakerDetails(EmomLookup emomLookup, String caretakerName, Date createdDate, String caretakerNumber,
        List<DeviceDetails> deviceDetailses) {
    this.emomLookup = emomLookup;
    this.caretakerName = caretakerName;
    this.createdDate = createdDate;
    this.caretakerNumber = caretakerNumber;
    this.deviceDetailses = deviceDetailses;
}

@Id
@GeneratedValue(strategy = IDENTITY)

@Column(name = "Caretaker_Id", unique = true, nullable = false)
public Integer getCaretakerId() {
    return this.caretakerId;
}

public void setCaretakerId(Integer caretakerId) {
    this.caretakerId = caretakerId;
}

// @ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "Pairing_Status")
public EmomLookup getEmomLookup() {
    return this.emomLookup;
}

public void setEmomLookup(EmomLookup emomLookup) {
    this.emomLookup = emomLookup;
}

@Column(name = "Caretaker_Name", nullable = false)
public String getCaretakerName() {
    return this.caretakerName;
}

public void setCaretakerName(String caretakerName) {
    this.caretakerName = caretakerName;
}

@Column(name = "Created_Date", nullable = false)
public Date getCreatedDate() {
    return this.createdDate;
}

public void setCreatedDate(Date createdDate) {
    this.createdDate = createdDate;
}

@Column(name = "Caretaker_Number", nullable = false)
public String getCaretakerNumber() {
    return this.caretakerNumber;
}

public void setCaretakerNumber(String caretakerNumber) {
    this.caretakerNumber = caretakerNumber;
}

@OneToMany(fetch = FetchType.LAZY, mappedBy = "caretakerDetails", cascade = CascadeType.PERSIST)
public List<DeviceDetails> getDeviceDetailses() {
    return this.deviceDetailses;
}

public void setDeviceDetailses(List<DeviceDetails> deviceDetailses) {
    this.deviceDetailses = deviceDetailses;
}

}

设备实体如下:

  @Entity
@Table(name = "Device_Details", schema = "dbo", catalog = "Emomtracking")


public class DeviceDetails implements java.io.Serializable {

private Integer deviceId;
private CaretakerDetails caretakerDetails;
private String deviceNumber;
private Date createdDate;

public DeviceDetails() {
}

public DeviceDetails(CaretakerDetails caretakerDetails, String deviceNumber, Date createdDate) {
    this.caretakerDetails = caretakerDetails;
    this.deviceNumber = deviceNumber;
    this.createdDate = createdDate;
}

@Id
@GeneratedValue(strategy = IDENTITY)

@Column(name = "Device_Id", unique = true, nullable = false)
public Integer getDeviceId() {
    return this.deviceId;
}

public void setDeviceId(Integer deviceId) {
    this.deviceId = deviceId;
}

@ManyToOne
@JoinColumn(name = "Caretaker_Id", nullable = false)
public CaretakerDetails getCaretakerDetails() {
    return this.caretakerDetails;
}

public void setCaretakerDetails(CaretakerDetails caretakerDetails) {
    this.caretakerDetails = caretakerDetails;
}

@Column(name = "Device_Number", nullable = false)
public String getDeviceNumber() {
    return this.deviceNumber;
}

public void setDeviceNumber(String deviceNumber) {
    this.deviceNumber = deviceNumber;
}

@Column(name = "Created_Date", nullable = false)
public Date getCreatedDate() {
    return this.createdDate;
}

public void setCreatedDate(Date createdDate) {
    this.createdDate = createdDate;
}

}

有人可以告诉我我在做什么错吗? 我在这里想念什么吗? 任何帮助将不胜感激! 谢谢

您可以尝试将@GeneratedValue(strategy=GenerationType.AUTO)代替@GeneratedValue(strategy = IDENTITY)放在您的课​​程中吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM