gpt4 book ai didi

java - 如何使用 Spring Boot 从自定义查询中返回包含少量字段的自定义列表?

转载 作者:行者123 更新时间:2023-11-29 04:08:22 27 4
gpt4 key购买 nike

我正在使用 Spring Boot 2 和 Java 8 开发 REST Web 服务。与创建包含表的所有字段的列表相比,我在创建包含少量字段的列表时遇到了问题。

@Query("SELECT c.idCliente, c.nome, c.cognome, c.username, c.email FROM Cliente c WHERE c.username LIKE %:username%")
List<Cliente> findClienteByUsername(@Param("username") String username);

结果是:

[
3,
null,
null,
"user",
"aaa"
]

但是当显示所有字段时得到这个:

{"idCliente":3,"username":"user","nome":null,"cognome":null,"dataNascita":null,"email":"aaa","password":"ciao","dataCreazione":"2018-11-23T21:33:31.000+0000","instagram":null,"facebook":null,"google":null,"twitter":null,"attivo":"1","ultimaSospensione":null}

为什么我无法获取字段名称和值?

最佳答案

虽然您必须选择一些字段,但您必须通过 DTO 类使用 Spring Projection。您必须使用选定的字段定义构造函数。

@Query("SELECT new Cliente(c.idCliente, c.nome, c.cognome, c.username, c.email) FROM Cliente c WHERE c.username LIKE %:username%")
List<Cliente> findClienteByUsername(@Param("username") String username);

您可以引用下面的链接了解详细信息。 https://smarterco.de/spring-data-jpa-query-result-to-dto/

或者您可以使用映射函数对每一行进行手动翻译。

 @Query("SELECT c.id, c.nome, c.cognome, c.username, c.email FROM Cliente c WHERE c.username LIKE %:username%")
List<Object[]> findClientDeatailsByuserName(@Param("username")String username);

关于java - 如何使用 Spring Boot 从自定义查询中返回包含少量字段的自定义列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56723359/

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