代码之家  ›  专栏  ›  技术社区  ›  artemb

如何在Hibernate中使用mappedBy更新集合类型关系?

  •  1
  • artemb  · 技术社区  · 17 年前

    @Entity
    public class Book {
        @ManyToOne
        Shelf shelf;
    }
    
    @Entity
    public class Shelf {
        @OneToMany(mappedBy="shelf")
        Set<Book> books;
    }
    

    如果我取出一个空书架(没有书),创建一本新书并将其保存到书架上,然后再次取出该书架,则其图书收藏是空的。当我使用调试日志运行它时,我看到Hibernate没有第二次搜索书架,它只是从会话缓存返回它,它不知道它的books集合已经更新。

    如何消除该效果并获得书架的更新状态?

    谢谢
    阿泰姆。

    3 回复  |  直到 17 年前
        1
  •  2
  •   artemb    17 年前

    似乎您必须在单个会话(事务)的范围内手动维护它。@Cascade和EAGER都不影响会话缓存

        2
  •  1
  •   uı6ʎɹnɯ ꞁəıuɐp    17 年前

    尝试设置书架中书籍的获取类型:

    @Entity
    public class Shelf {
        @OneToMany(mappedBy="shelf",fetch=FetchType.EAGER)
        Set<Book> books;
    }
    
        3
  •  1
  •   danieljimenez    17 年前