我有以下实体:
class User {
..
...
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "id.uKey")
@MapKey(name="id.achieveId")
private Map<Integer, Achievement> achievements;
..
..
}
有时我会打电话: Hibernate.Initialize();
这张 map 充满了数据库中的条目。
当应用程序继续运行时,我将新条目保存到数据库表中。
然后我尝试访问 map ,但它不包含新条目。
有没有办法让它知道需要重新选择数据库表?
谢谢
编辑:
我添加这样的新条目:
public void save() {
..
tx = dbs.beginTransaction();
Achievement ua = new Achievement(key, id);
dbs.save(ua);
tx.commit();
}
最佳答案
初始化对象后,它驻留在 hibernate session 中,并且该 session 不能通过底层数据库的更改进行更新。只需从数据库重新加载对象,但在执行此操作之前将其从 session 中删除。
但也许,您真正想要的是修改对象中包含的 map 。这就是 OOP 方式。之后,您可以使用 Hibernate 持久保存整个对象。
关于java - 添加条目后注释为 "Lazy"的 map 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26493815/