【问题标题】:Problem rendering the result set columns names with interface projection method names - Fetching Multiple Columns from Multiple Tables使用接口投影方法名称呈现结果集列名称时出现问题 - 从多个表中获取多个列
【发布时间】:2020-06-22 14:26:12
【问题描述】:

我需要来自多个表数据的多个列。

使用原生查询:

@Query(value = "select t1.name as name, t1.phone as phone, t2.address as address, t2.pincode as pincode 
from tablet t1, table2 t2 
where t1.id=t2.tab1_id", nativeQuery = true)
List<MultipleColumnValues> getMultipleColumnsFromMultipleTables();

上述查询的返回类型是下面投影的列表:

public interface MultipleColumnValues {
     String getName();
     String getPhone();
     String getAddress();
     String getPincode();
}

我已成功获取列表。
但: 结果存储在不同的变量中,例如,
提到的查询中的列名没有使用投影方法 Names 正确呈现。

例如:列 'name'(db query) 的值存储在 getPincode() 中,
而 pincode(db Query) 存储在 getAddress() 中

如何正确渲染/映射结果集名称与确切的投影方法名称?

【问题讨论】:

  • 你可以尝试添加“as”,如“t1.name as name”
  • @SimonMartinelli 按照建议编辑了我的问题
  • 我无法重现您的问题。您使用的是哪个 Spring Boot 版本?
  • @SimonMartinelli spring boot 版本-1.5.2

标签: spring-boot jpa spring-data-jpa projection


【解决方案1】:

这是 Spring Boot 1.5.2 中使用的 Spring Data JPA 版本中的一个错误。

您必须升级到 1.5.3,然后一切正常。

这与问题无关:https://jira.spring.io/browse/DATACMNS-927

【讨论】:

  • 我不知道谁对你的问题投了反对票。但是你试过 1.5.3 吗?
  • 我的项目更新到较新版本在办公室几乎没有限制。但我尝试改组本机查询中的选择列以呈现到我的界面投影,现在结果正确。后来我检查了多个工作空间,它工作正常。
  • 另外,我还有其他团队正在开发 Spring Boot 2.2.0,他们也在使用类似的方法,他们从未遇到过这些问题。我想你的猜测是对的。感谢您的时间@simon Martinelli
  • 我很乐意为您提供帮助。如果有帮助请采纳我的回答
  • 是的,确实有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 2023-01-08
相关资源
最近更新 更多