【发布时间】:2018-03-26 17:42:26
【问题描述】:
我在我的 Person 实体中定义了一个实体图。当我将 phone 属性声明为属性节点时,会创建一个 join 子句,并且只执行一个 select,正如预期的那样。但是,当我从实体图中删除电话属性时,电话字段仍然被加载,但现在每个人都重新检索了一个新的选择查询。是否可以忽略特定 EntityGraph 中的属性?
个人实体:
@Entity
@Table(name = "person")
@NamedEntityGraph(
name = Person.PERSON_LAZY,
attributeNodes = {}
)
public class Person {
public static final String Person_LAZY = "person.lazy";
@Id
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@JoinColumn(name = "phone")
@ManyToOne
private Phone phone;
}
PersonRepository:
@Repository
public interface PersonRepository extends JpaRepository<Person, Long> {
@EntityGraph(value = Person.PERSON_LAZY, type = EntityGraphType.FETCH)
@Query("SELECT p FROM Person p")
public List<Person> findAllLazy();
}
【问题讨论】:
标签: java hibernate spring-data-jpa persistence eager-loading