当前位置: 首页 > 知识库问答 >
问题:

Spring JPA Hibernate:OneToMany双向持久化

微生乐
2023-03-14

如何在一对多的关系中保持子实体?

@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;
}

创建注册时,如果付款表中的注册列不可为空:

通用域名格式。mysql。jdbc。例外情况。jdbc4.MySQLIntegrityConstraintViolationException:列“registration”不能为null

但如果注册可为null,则会创建付款,但注册列为null:

直到发生异常并执行“HH000010:在批处理发布时,它仍然包含JDBC语句”。

请你能帮我,禁用Hibernate批处理或了解什么是错的?

共有2个答案

孙嘉悦
2023-03-14

通过查看代码列“registration”,表注册应该是主键并自动递增。如果不是这样,请使用表进行验证。

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

锺离良哲
2023-03-14

您需要持久化注册实体。

初始化您的注册对象

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);
 类似资料:
  • Akka持久化使有状态的actor能留存其内部状态,以便在因JVM崩溃、监管者引起,或在集群中迁移导致的actor启动、重启时恢复它。Akka持久化背后的关键概念是持久化的只是一个actor的内部状态的的变化,而不是直接持久化其当前状态 (除了可选的快照)。这些更改永远只能被附加到存储,没什么是可变的,这使得高事务处理率和高效复制成为可能。有状态actor通过重放保存的变化来恢复,从而使它们可以重

  • 我正在使用网络逻辑10.3。我正在尝试配置一个持久订阅,其中包含由 jdbc 存储(在 Oracle DB 中)支持的持久消息。我有一个主题,MDB 正在作为持久订阅者侦听该主题。在场景-1下:如果我发送消息,它会命中MDB。 在场景2中:我挂起了MDB,希望发送到主题的消息只要不被MDB(它是唯一注册的持久订阅者)使用,就会一直存在。但是当我向主题发送消息时,它短暂地出现在那里,然后就消失了(我

  • Spark通过在操作中将其持久保存在内存中,提供了一种处理数据集的便捷方式。在持久化RDD的同时,每个节点都存储它在内存中计算的任何分区。也可以在该数据集的其他任务中重用它们。 我们可以使用或方法来标记要保留的RDD。Spark的缓存是容错的。在任何情况下,如果RDD的分区丢失,它将使用最初创建它的转换自动重新计算。 存在可用于存储持久RDD的不同存储级别。通过将对象(Scala,Java,Pyt

  • Redis 支持持久化,即把数据存储到硬盘中。 Redis 提供了两种持久化方式: RDB 快照(snapshot) - 将存在于某一时刻的所有数据都写入到硬盘中。 只追加文件(append-only file,AOF) - 它会在执行写命令时,将被执行的写命令复制到硬盘中。 这两种持久化方式既可以同时使用,也可以单独使用。 将内存中的数据存储到硬盘的一个主要原因是为了在之后重用数据,或者是为了防

  • 不要害怕文件系统! Kafka 对消息的存储和缓存严重依赖于文件系统。人们对于“磁盘速度慢”的普遍印象,使得人们对于持久化的架构能够提供强有力的性能产生怀疑。事实上,磁盘的速度比人们预期的要慢的多,也快得多,这取决于人们使用磁盘的方式。而且设计合理的磁盘结构通常可以和网络一样快。 关于磁盘性能的关键事实是,磁盘的吞吐量和过去十年里磁盘的寻址延迟不同。因此,使用6个7200rpm、SATA接口、RA

  • Spark 有一个最重要的功能是在内存中_持久化_ (或 缓存)一个数据集。