我有一个经典的一对多关系。我使用session.createQuery()方法从数据库中读取子实体列表,仅过滤所需的少量子实体。每个孩子都引用了父实体。然后我更新父实体的一些字段并保存它(参见日志和数据库中保存的更改)。但是当我从child.getParent()这样的子实体中获取父级时,它仍会在更新之前返回对具有字段值的父对象的引用。 当构造新的子实体而不是使用session.createQuery()从db中读取它时,问题不会出现 - 引用的父实体的字段包含实际值。 bean使用session.createQuery()可能有什么问题?任何意见,将不胜感激。
答案 0 :(得分:0)
您必须再次为孩子设置“已更改的父级”:
Parent parentToUpdate;
...
child.setParent(parentToUpdate);
...
session.persist(child);
如果您想将更改传输到数据库,您还应该保留它们。