java - 如何在 spring-data 中使用 CrudRepository 强制预加载?

标签 java spring hibernate spring-data

我有一个包含 List 的实体,因此默认加载 lazy:

interface MyEntityRepository extends CrudRepository<MyEntity, Long> {

}

@Entity
public class MyEntity {
    @Id
    private Long id;

    @OneToMany(mappedBy = "bar") //lazy by default
    private List<Bar> bars;
}

@Entity
public class Bar {
    //some more
}

问题:如何在执行repository.findOne(id)时强制预加载?

最佳答案

您可以使用 left join fetch 强制预先获取编写自定义 HQL 查询,例如:

interface MyEntityRepository extends CrudRepository<MyEntity, Long> {
    @Query("select e from MyEntity e left join fetch e.bar b where e.id = ?1")
    MyEntity findOne(long id)
}

关于java - 如何在 spring-data 中使用 CrudRepository 强制预加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31854776/

相关文章:

java - 你如何从 Spring MVC 中的 Controller 内部获取 Jsp PageContext?

java - 调用封闭函数时 HQL No data type for Node 异常

java - 具有未知元素类型的 Hibernate Map

java - 如何表达不在M :N relation with JPA 2. 0 Criteria中?

java - listview 1 Activity 用于打开 listview 2 Activity

java - KeyPairGenerator 无法解析

java - 是否可以获取到@JsonProperty 的原始字段名?

java - 是什么让事务成为 Spring/Java 中的事务(特定场景)?

java - Spring Boot SLF4J 日志记录性能

java.lang.NoSuchMethodError : org. springframework.web.context.ConfigurableWebApplicationContext.setId(Ljava/lang/String;)V