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

Java 如何在Hibernate中使用mappedBy更新集合类型关系?,java,hibernate,session-cache,Java,Hibernate,Session Cache,比如说,我有两个相关实体 @Entity public class Book { @ManyToOne Shelf shelf; } @Entity public class Shelf { @OneToMany(mappedBy="shelf") Set<Book> books; } @实体 公共课堂用书{ @许多酮 货架; } @实体 公共类书架{ @OneToMany(mappedBy=“shelf”) 设置书籍; } 如果我取出一个空书架

比如说,我有两个相关实体

@Entity
public class Book {
    @ManyToOne
    Shelf shelf;
}

@Entity
public class Shelf {
    @OneToMany(mappedBy="shelf")
    Set<Book> books;
}
@实体
公共课堂用书{
@许多酮
货架;
}
@实体
公共类书架{
@OneToMany(mappedBy=“shelf”)
设置书籍;
}
如果我取出一个空书架(没有书),创建一本新书并将其保存到书架上,然后再次取出该书架,则其图书收藏是空的。当我使用调试日志运行它时,我看到Hibernate没有第二次搜索书架,它只是从会话缓存返回它,它不知道它的books集合已经更新

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

谢谢,

Artem.

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

@Entity
public class Shelf {
    @OneToMany(mappedBy="shelf",fetch=FetchType.EAGER)
    Set<Book> books;
}
@实体
公共类书架{
@OneToMany(mappedBy=“shelf”,fetch=FetchType.EAGER)
设置书籍;
}

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

@Entity
public class Shelf {
    @OneToMany(mappedBy="shelf",fetch=FetchType.EAGER)
    Set<Book> books;
}
@实体
公共类书架{
@OneToMany(mappedBy=“shelf”,fetch=FetchType.EAGER)
设置书籍;
}

您要找的是@Cascade吗?

您要找的是@Cascade吗?

似乎您必须在单个会话(事务)的范围内手动维护它。@Cascade和EAGER impact会话缓存似乎都不需要在单个会话(事务)的范围内手动维护。@Cascade和eagent impact会话缓存都不是,我不希望它是急切的。这会严重影响性能,我不想让它变得急躁。这会严重影响性能听起来是这样,但我无法让它工作。我应该使用哪种级联类型?级联在这里没有帮助听起来像是这样,但我无法让它工作。我应该使用哪种级联类型?级联在这里没有帮助