相关疑难解决方法(0)

FetchMode如何在Spring Data JPA中工作

我确实在我的项目中有三个模型对象之间的关系(帖子末尾的模型和存储库片段).

当我打电话时PlaceRepository.findById它会触发三个选择查询:

( "SQL")

  1. SELECT * FROM place p where id = arg
  2. SELECT * FROM user u where u.id = place.user.id
  3. SELECT * FROM city c LEFT OUTER JOIN state s on c.woj_id = s.id where c.id = place.city.id

这是相当不寻常的行为(对我而言).在阅读Hibernate文档后我可以告诉它应该总是使用JOIN查询.在类中FetchType.LAZY更改为 查询(使用附加SELECT 查询)时,查询没有区别,更改为 (使用JOIN查询)时类相同.FetchType.EAGERPlaceCityFetchType.LAZYFetchType.EAGER

当我使用CityRepository.findById抑制火时两个选择:

  1. SELECT * FROM city c where id = arg
  2. SELECT * FROM state s where id = city.state.id

我的目标是在所有情况下都有一个sam行为(总是JOIN或SELECT,但是JOIN首选).

型号定义:

地点:

@Entity
@Table(name = …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa spring-data-jpa

74
推荐指数
3
解决办法
8万
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1

spring ×1

spring-data-jpa ×1