0
我有兩個實體@OneToMany(Entity1)& @ManyToOne(Entity2)雙向關係。在@OneToMany關係中,我有@Cascading {Cascade.ALL}。但是,當我改變最初爲false的布爾屬性時,實體的@ManyToOne關係爲true,然後返回到事務或方法內的false,它會導致數據庫觸發更新查詢以將實體的布爾值設置爲false,這似乎因爲它最初是錯誤的,並且在提交時仍然是錯誤的。 我使用eclipselink 2.5.1作爲jpa實現。可能是什麼原因?Eclipselink更新實體字段時,它不會改變
update(Integer entityId) {
tx.begin();
Entity1 entity1 = findEntity(entityId);
for(Entity2 entity2 : entity1.getEntity2List()) {
entity2.setBooleanProperty(Boolean.TRUE);//which is initially false, we set it to true for programmatic purpose ;
...
entity2.setBooleanProperty(Boolean.FALSE);//at this point db updates boolean property to false
}
em.merge(entity1);
tx.commit();
}
如果我使用eclipselink的歷史支持保留所有更改的歷史記錄,那將會出現問題。它記錄所有更新,即使不需要保存這樣的不必要的更新,而且如果我以這種方式更改大量實體,它也是開銷。 – Odgiiv