gpt4 book ai didi

java - 如何使用 spring CrudRepository 仅选择特定字段?

转载 作者:行者123 更新时间:2023-12-02 17:23:23 26 4
gpt4 key购买 nike

如何从以下类层次结构中仅选择特定字段?

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

@ManyToOne
@JoinColumn(name="fk_person_id", foreignKey = @ForeignKey(name="fk_person"))
private Person person; //unidirectional

private String fieldA, fieldB, ..field M;

//many more fields and some clobs
}

@Entity
public class Person {
@Id private Long id;
private String firstname;
private String lastname;
}


interface MyEntityRepository extends CrudRepository<MyEntity, Long> {
List<MyEntity> findByIdAndPersonFirstnameAndPersonLastname(long id, String firstname, String lastname);
}

这工作得很好,只是性能非常差,因为 MyEntity 并且 Person 有一些我想阻止在这种特定情况下获取的字段和关联(例如 clob/文本)。

问题:如何编写此查询来查找结果集,并仅获取绝对必需的字段(假设来自 MyEntityid, fieldA, fieldB

最佳答案

使用lazy initialization对于非必需字段:

  • FetchType.LAZY = 除非通过 getter 明确“请求”,否则不会加载关系
  • FetchType.EAGER = 加载所有关系

例如,在Person中:

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="fk_person_id", foreignKey = @ForeignKey(name="fk_person"))
private Person person; //unidirectional

关于java - 如何使用 spring CrudRepository 仅选择特定字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32378873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com