gpt4 book ai didi

java - 查询期间不要解析 @ManyToOne 字段

转载 作者:行者123 更新时间:2023-12-01 19:30:14 25 4
gpt4 key购买 nike

我有以下 DailyEntry 属性:

@Data
@Entity
@JsonInclude(JsonInclude.Include.NON_NULL)
public class DailyEntry {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

private LocalDate date;
private LocalTime startTime;
private LocalTime endTime;
private Duration breaks;
private String performanceRecord;
private EntryStatus status;

@ManyToOne
private Project project;

@ManyToOne
private Employee employee;
}

我迭代项目的所有 DailyEntries:

for (DailyEntry dailyEntry : dailyEntryRepository.findByProjectId(project.getId())) {
// do something
}

正在使用 DailyEntryRepository 中定义的自动生成的查询:

List<DailyEntry> findByProjectId(@Param("id") Long id);

正如您在实体定义中看到的,DailyEntryProjectEmployee 有两个 ManyToOne 关系。这意味着对于每个 DailyEntry 我从 dailyEntryRepository.findByProjectId(project.getId()) 获取的两个 SQL 查询用于解析 Employee 项目。但在这种情况下我实际上并不需要它们。当我调用 dailyEntryRepository.findByProjectId(project.getId()) 时,有没有办法告诉系统不解析 EmployeeProject ?因为我认为这会提高性能,因为这会大大减少 SQL 查询的数量。

最佳答案

您可以尝试延迟加载 Project 和 Employee。延迟加载仅在需要时才获取项目。

@ManyToOne (mappedBy = "id", fetch = FetchType.LAZY)

关于java - 查询期间不要解析 @ManyToOne 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59265523/

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