我遇到Hibernate将重复记录写入表格的问题。 当我查看日志时,我看到:
有趣的是,当我在代码中设置断点时,它运行良好,只写入1条记录。因此,我的猜测是Hibernate执行select查询以检查是否已插入记录。然后,如果我没有断点,代码执行速度很快,因此DB /缓存尚未更新(?),因此Hibernate获取空结果,认为没有记录并执行另一个插入命令。但是,如果我有断点,则在执行select之前更新DB /缓存,所以一切都很好。
我的问题是,我该怎么做才能保证Hibernate始终获得正确的数据库状态?或者,如果您认为这里存在另一个导致此问题的问题,它会是什么? 感谢。
Entity 1:
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "property2")
private Collection<Entity2>...
Entity 2:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="field1",referencedColumnName="field2")
private Entity1...
我通过清除collection
,添加所有Entity2
个对象,然后在实体管理器上进行合并调用来更新。但是,当集合中没有对象并且我只是添加一个新对象时,实际情况会发生,所以这不是没有正确清除的问题。
答案 0 :(得分:0)
我不确定,但原因可能是: 你有2个主题: