jpa返回值映射_Spring Data JPA将本机查询结果映射到非实体POJO

小编典典

我认为最简单的方法是使用所谓的投影。它可以将查询结果映射到接口。使用SqlResultSetMapping不方便,并使你的代码难看:)。

正确的示例来自spring data JPA源代码:

public interface UserRepository extends JpaRepository {

@Query(value = "SELECT firstname, lastname FROM SD_User WHERE id = ?1", nativeQuery = true)

NameOnly findByNativeQuery(Integer id);

public static interface NameOnly {

String getFirstname();

String getLastname();

}

}

你也可以使用此方法获取投影列表。

请查看此spring数据JPA文档条目,以获取有关预测的更多信息。

注1:

请记住,将你的User实体定义为普通对象-投影界面中的字段必须与该实体中的字段匹配。否则,字段映射可能会损坏(getFirstname()可能返回姓氏等的值)。

笔记2:

如果使用SELECT table.column ...符号,请始终定义与实体名称匹配的别名。例如,此代码将无法正常工作(投影将为每个getter返回null):

@Query(value = "SELECT user.firstname, user.lastname FROM SD_User user WHERE id = ?1", nativeQuery = true)

NameOnly findByNativeQuery(Integer id);

但这很好用:

@Query(value = "SELECT user.firstname AS firstname, user.lastname AS lastname FROM SD_User user WHERE id = ?1", nativeQuery = true)

NameOnly findByNativeQuery(Integer id);

对于更复杂的查询,我宁愿使用JdbcTemplate自定义存储库。

2020-04-11

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值