[英]LoadableComponent in Selenium: isLoaded method is not used when class object comes from another class
[英]Usage of isLoaded(Object) method in PersistenceUnitUtil
我想知道调用方法PersistenceUnitUtil#isLoaded(Object)
的原因是什么。
JPA文档说,它可以帮助确定属于持久性单元的实体的负载状态,但同时也提到
如果已为其指定了FetchType.EAGER的所有属性均已加载,则认为该实体已加载。
那么,是否存在并非所有带有FetchType.EAGER
属性都被加载的情况? 这些是什么? 我只确定它适用于EntityManager#getReference()
方法返回的实体。 还有更多吗?
集成测试是其中的一大用途。 如果要确保在调用某个方法时,返回的任何内容都加载了某些东西,这是一种很好的方法。
设置为使用FetchType.EAGER
的关系可能有几种方法最终无法加载。
使用@NamedEntityGraph
,如果将查询的提示指定为javax.persistence.fetchgraph
,则JPA提供程序应仅加载实体图中命名的关系。 这和javax.persistence.loadgraph
之间的区别是, javax.persistence.loadgraph
使用它们已经拥有的任何获取类型来加载实体图中未指定的关系。
问题和我说提供程序“应该”仅加载那些关系的原因是,JPA规范允许提供程序始终加载超出规范要求的内容。 具体地说,Hibernate会忽略fetchgraph的建议行为,并将其与loadgraph一样对待。
对于Hibernate条件查询,您可以使用setFetchMode()
显式覆盖并设置任何关系的获取模式。 我不知道其他提供商。
也许还有其他人?
嗯,当我在寻找更多详细信息时,我发现这已经在这里的另一个StackOverflow问题中被全部提及:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.