gpt4 book ai didi

java - 返回 DTO 内的另一个实体或 DTO

转载 作者:太空宇宙 更新时间:2023-11-04 10:35:07 26 4
gpt4 key购买 nike

所以基本上我正在编写一个使用 DTO 的 API,但我在返回 DTO 内的另一个实体时遇到了问题。

这是我的 DTO:

public class DirectoryDTO {

String personFirstName;
String personLastName;
Hrper hrper;

public DirectoryDTO(String personFirstName, String personLastName, Hrper hrper) {
this.personFirstName = personFirstName;
this.personLastName = personLastName;
this.hrper = hrper;
}
// getters and setters
}

我的使用查询的服务:

public List<DirectoryDTO> getCustomDirectoryEntries(String department) {

List<DirectoryDTO> directoryDTOS = em.createQuery(
"select new dto.DirectoryDTO(" +
"p.firstName, " +
"p.lastName, " +
"p.hrper " +
") " +
" from Person p "
, DirectoryDTO.class)
.getResultList();

return directoryDTOS;
}

所以基本上这会返回一个 DirectoryDTO 列表,其中填写了除了连接到 Person 的 Hrper 实体之外的所有信息:

返回数据:

{
"personFirstName": "John",
"personLastName": "Doe",
"hrper": null
}, ....

还有一些其他的事情...

1) 当我取出查询中的 DTO 部分并将结果写入列表时,我在 Hrper 中获取数据,这意味着我的连接不正确。

2) 我还尝试用 DirectoryDTO 中创建的 HrperDTO HrperDto 替换 Hrper Hrper,但是我的查询将无法运行,因为它正在查找 DTO 而不仅仅是实体

最佳答案

好吧,您不提供实体,所以我无法测试它,但这是一个快速尝试的事情,所以希望如果它不起作用,我不会浪费您太多的时间。尝试使用 JOIN FETCH 语法显式告诉 JPA 立即加载相关实体。尝试将 from Person p 替换为 from Person p join fetch p.hrpr h

由于 SELECT NEW IIRC 不会检索对象的完整图表,除非您告诉它,您甚至可能不需要 fetch 关键字 - 这可能有效:from Person p join p.hrpr h

关于java - 返回 DTO 内的另一个实体或 DTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49575250/

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