java - 添加条目后注释为 "Lazy"的 map 未更新

标签 java hibernate hibernate-mapping

我有以下实体:

   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/

相关文章:

java - 与android中的子字符串混淆

java - Full GC 后 OldGen 使用率上升

java - Jboss AS 7.1 卡在启动状态

java - 使用 Spring MVC 和 Hibernate 将 JSP 中的对象作为外键发送

java - 无法使用@UpdateTimestamp注释更新时间戳

java - 将无状态 session bean 注入(inject) Seam 2.2 中的 EntityHome 派生后引发空指针异常

java - Hibernate OnetoMany 和 ManyToOne 抛出异常

java - PhoneStateListener onSignalStrengthsChanged ArrayList 内的平均 ASU 值

java - 一对一注释不会将外键插入表中

java - 使用版本和时间戳我得到一个 SAXParseException