- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个实体,它有很多 ManyToOne、OneToOne 等关系,它们本身也有一些关系。例如
@OneToMany(targetEntity = Season.class, cascade = {
CascadeType.ALL
})
@JoinColumn(name = "SEASON_ID")
public List<Season> getSeasons(){...}
(我无法改变这一点)。
这些都是延迟加载的(我认为默认情况下),这很好,我们不想改变这一点。现在我们有这样一种情况,我们希望通过它的 id 急切地找到整个实体并返回它。
我发现了很多更改实体的建议以及关于急切加载还是延迟加载更好的讨论,但目前这些对我没有帮助,因为该实体对我们来说是遥不可及的。有没有办法做到这一点,无需更改实体,也不必调用每个可能的 getter 来初始化惰性实体(因为这些实体太多了)?例如,Question 24573877 的答案对我不起作用。
基本上我想说“急切地加载实体,但仅此一次”。目前我只是做 return em.find(MyEntity.class,contractId)
(我可以更改它)。
感谢和问候Urr4
最佳答案
看看:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html
章节:14.3。协会和加入
A "fetch" join allows associations or collections of values to be initialized along with their parent objects using a single select. This is particularly useful in the case of a collection. It effectively overrides the outer join and lazy declarations of the mapping file for associations and collections. See Section 19.1, “Fetching strategies” for more information.
您必须编写查询而不是使用 em.find。
例如此查询:
from Cat as cat inner join fetch cat.mate left join fetch cat.kittens
将返回已加载伴侣和小猫的猫(渴望),即使它们已在惰性中初始化
编辑:或者您可以使用 fetch profile :
In order to mitigate these, Hibernate propose a fetch strategy that works not on the mapping level, but on the request level. Thus, you can still have lazy loading mappings but eager fetching in some cases.
关于java - 尽管延迟初始化还是热切加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33305505/
我有两个实体,一个用户和一个角色,具有从用户到角色的一对多关系。这些表格如下所示: mysql> select * from User; +----+-------+----------+ | id
我是一名优秀的程序员,十分优秀!