gav*_*koa 4 spring hibernate jpa
我有一些实体,其中一些字段标记为LAZY.为了LAZY在会话打开时加载 字段只是访问getter,所以ORM代理执行select子查询.
但是,当你需要完全解析的对象作为获取的渴望关系时,这是次优的join.
如何将某些字段标记EAGER为仅用于一个查询的临时字段?
这可能是JPA标准还是只有像Hibernate这样的专有扩展?
Hibernate有一个名为Fetch Profiles的功能可以解决这个问题.它需要访问Hibernate Session,但您可以使用unwrap()它来访问它EntityManager.
如果您需要纯JPA解决方案,则可以join fetch在需要急切提取的用例中加载对象时使用查询.
更新: JPA 2.1(由Hibernate 4.3实现)支持类似于获取配置文件的功能 - 实体图.
SpringJpaRepository允许使用以下标记查询(包括自定义)org.springframework.data.jpa.repository.EntityGraph:
@Entity Book {
@Id Long id;
@OneToMany List<Author> authors;
}
@EntityGraph(attributePaths = {"authors", "author.address"})
@Query("select b from Book b" +
" where b.id in (:ids)")
List<Book> loadAll(@Param("ids") List<Long> ids);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4289 次 |
| 最近记录: |