首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring + Hibernate : OneToMany双向持久化

Spring + Hibernate : OneToMany双向持久化
EN

Stack Overflow用户
提问于 2016-11-23 00:47:57
回答 2查看 634关注 0票数 0

如何在oneToMany关系中持久化子实体?

代码语言:javascript
复制
@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语句“。

请你帮我一下,去禁用冬眠批次还是明白出了什么问题?

EN

回答 2

Stack Overflow用户

发布于 2016-11-23 05:58:08

您需要持久化注册实体。

初始化注册对象

代码语言:javascript
复制
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);
票数 0
EN

Stack Overflow用户

发布于 2016-12-27 17:43:23

通过查看您的代码列,表的“注册”应该是主键和自动增量。如果不是,请用您的表进行验证。

如果没有将子表的主键设置为主键并在表中自动递增,则通过此错误进行Hibernate。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40754266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档