如何在oneToMany关系中保留子实体?
@Entity
public class Payment implements Serializable {
@ManyToOne(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY)
@JoinColumn(name = "registration", nullable = false)
private Registration registration;
}
@Entity
public class Registration implements Serializable {
@OneToMany(mappedBy="registration", cascade = {CascadeType.ALL}, fetch = FetchType.LAZY)
private List<Payment> payment;
}
在注册创建时,如果注册列在付款表中不可为空:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: 列'注册'不能为空
但如果注册可以为空,则会创建付款,但注册列为空:
直到发生异常并且“HH000010:批量发布时它仍然包含JDBC语句”才会被执行。
请帮助我,禁用Hibernate批处理或了解什么是错误的?
答案 0 :(得分:0)
您需要保留注册实体。
初始化您的注册对象
Registration reg = new Registration();
List<Payment> lstPayment = new ArrayList<Payment>();
for loop...
Payment pay = new Payment();
// imp point
pay.setRegistration(reg);
lstPayment.add(pay);
for loop ends //
reg.setLstPayment(lstPayment);
//persist Registration entity
em.persist(reg);
答案 1 :(得分:0)
查看代码列“注册”表注册应该是主键和自动增量。如果不是这样,请与您的表格核实。
如果未将子表的主键设置为主键并在表中自动增加,则通过此错误进行休眠。