JPA/Hibernate阻止合并触发子查询



我有一个批处理过程,更新表a中的实体(实体有预生成的id)并将子实体插入表B(生成的id)。

在批处理作业运行之前,表A总是被填充的,表B总是空的。

我希望实体a和B之间的双向关系(对其他批处理过程有用),但调用entitymanager。父A上的merge会导致B和A的select语句。这是不必要的,因为B总是一个新记录,并且使用entitymanager.persist单独插入。这确实会影响性能,因为有多个子集合(称为C),因此对B和C有不必要的选择。

我希望只使用Cascade。在A上调用merge时,子集合上的PERSIST会阻止这些选择,但似乎不是这样。

这是可能的,或者,正如我目前所做的,是唯一的解决方案,以删除@OneToMany关系,只是有@ManyToOnes在父端?

这就是为什么如果您知道要插入新记录,则永远不应该使用merge的原因。在这种情况下,您应该使用persist操作,该操作将避免使用select语句。

最新更新