如何在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:列“注册”不能为空
但是,如果注册为空,则创建付款,但注册列为null:

直到出现异常并执行"HH000010:在批处理发布时仍然包含JDBC语句“。
请你帮我一下,去禁用冬眠批次还是明白出了什么问题?
发布于 2016-11-23 05:58:08
您需要持久化注册实体。
初始化注册对象
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);发布于 2016-12-27 17:43:23
通过查看您的代码列,表的“注册”应该是主键和自动增量。如果不是,请用您的表进行验证。
如果没有将子表的主键设置为主键并在表中自动递增,则通过此错误进行Hibernate。
https://stackoverflow.com/questions/40754266
复制相似问题