大佬教程收集整理的这篇文章主要介绍了FetchMode如何在Spring Data JPA中工作,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我认为Spring Data会忽略FetchMode。在使用Spring Data时,我总是使用@H_618_3@@namedEntityGraph@H_301_2@和@H_618_3@@EntityGraph@H_301_2@批注
@H_618_3@@Entity @namedEntityGraph(name = "GroupInfo.detail", attributeNodes = @namedAttributeNode("members")) public class GroupInfo { // default fetch mode is lazy. @manyToMany List<GroupMember> members = new ArrayList<GroupMember>(); … } @Repository public interface GroupRepository extends CrudRepository<GroupInfo, String> { @EntityGraph(value = "GroupInfo.detail", type = EntityGraphType.LOAD) GroupInfo getByGroupname(String Name); } @H_301_2@
在 查看文档
我确实在项目中的三个模型对象之间有关系(文章末尾的模型和存储库片段)。
当我调用@H_618_3@PlaceRepository.findById它时,会触发三个选择查询:
(“ sql”)
(对我而言)这是非常不正常的行为。据阅读Hibernate文档后所知,它应该始终使用JOIN查询。在类中@H_618_3@FetchType.LAZY更改为
查询时(带有附加SELECT 的查询)没有任何区别,而在类更改为
(使用JOIN查询时)则没有变化。@H_618_3@FetchType.EAGER``Place``City``FetchType.LAZY``FetchType.EAGER
当我使用@H_618_3@CityRepository.findById抑制射击时,有两个选择:
我的目标是在所有情况下都具有sam行为(始终为JOIN或SELECT,但首选JOIN)。
型号定义:
地点:
@H_618_3@@Entity @Table(name = "place") public class Place extends Identified { @Fetch(FetchMode.JOIN) @manyToOne(fetch = FetchType.LAZY) @Joincolumn(name = "id_user_author") private User author; @Fetch(FetchMode.JOIN) @manyToOne(fetch = FetchType.LAZY) @Joincolumn(name = "area_city_id") private City city; //getters and setters }
市:
@H_618_3@@Entity @Table(name = "area_city") public class City extends Identified { @Fetch(FetchMode.JOIN) @manyToOne(fetch = FetchType.LAZY) @Joincolumn(name = "area_woj_id") private State state; //getters and setters }
仓库:
PlaceRepository
@H_618_3@public interface PlaceRepository extends JpaRepository<Place,Long>,PlaceRepositoryCustom { Place findById(int id); }
UserRepository:
@H_618_3@public interface UserRepository extends JpaRepository<User,Long> { List<User> findAll(); User findById(int id); }
城市资料库:
@H_618_3@public interface CityRepository extends JpaRepository<City,CityRepositoryCustom { City findById(int id); }
以上是大佬教程为你收集整理的FetchMode如何在Spring Data JPA中工作全部内容,希望文章能够帮你解决FetchMode如何在Spring Data JPA中工作所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。