我使用 Hibernate 已经很长时间了。今天我经历了一些我无法解释的事情。我保存了一个没有级联到相关实体的实体。相关的非级联实体与一些新的/非级联实体有级联关系,虽然他们的实体模型在持久化后没有更新,但它们被保存到数据库中!
以下是游戏中实体的要点:
当我们的@Transactional 服务调用 planRepository.save(plan) 时,我希望将保存对计划及其相关日志的更新,但不会保存对步骤及其日志的任何更改。但是,我观察到的是该步骤新创建的日志已保存。步骤已经存在;我不确定这是否是一个重要的细节。所有日志都是新的。
如果我使用 EntityManager 创建“从日志”查询,它将为我提供这些步骤的持久日志。但是,如果我将计划返回给调用方法(在这种情况下是控制器),或者直接从 Hibernate 获取计划,则步骤的日志没有主键,而计划的日志有(这就是我想要的)期待)。
我很惊讶 Hibernate 正在保存这些步骤的日志。正在发生什么样的伏都教?这个可以配置吗?