列名在spring boot中无效
Posted
技术标签:
【中文标题】列名在spring boot中无效【英文标题】:The column name is not valid in springboot 【发布时间】:2021-12-30 18:19:27 【问题描述】:我编写了本机查询,但出现错误:
列名 covidSymptomId 无效。
怎么了?
There are table in mssql
Error picture
CovidSymptom.java
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name="CovidSymptom")
public class CovidSymptom
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "covidSymptomId")
private int id;
@ManyToOne
@JoinColumn(name = "covidId")
private Covid covidSymptom;
@Column(name = "symptom")
private String symptom;
CovidSymptomDao.java
@Query(nativeQuery = true,value = "Select symptom From CovidSymptom GROUP BY symptom order by count(covidSymptomId) desc")
List<CovidSymptom> getMost3SymptomOffCovid();
【问题讨论】:
根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或输入到问题中。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。 我会尝试删除 covidSymptomId 的列名注释,并仅使用当您使用 @id 注释时该列将使用的默认 ID 名称 您会为该列显示什么值?您正在按不同的列进行聚合,因此要么选择COUNT
或 MIN
等聚合,要么删除关联。
【参考方案1】:
您需要包含查询中映射的所有列。所以:
Select covidSymptomId, symptom....
【讨论】:
现在我得到“列 'CovidSymptom.covidSymptomId' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。”这个错误。 @Kadri 那是因为您正在聚合,而该列不在GROUP BY
中,所以它需要一个聚合函数【参考方案2】:
我不确定您为什么会遇到列名问题,因为您的选择查询返回“症状”(字符串)列表,而您的方法提供了“CovidSymptom”(对象)列表。
【讨论】:
以上是关于列名在spring boot中无效的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Boot Security 修复 Spring Boot Webflux 应用程序中的“名称为 requestMappingHandlerAdapter 的 bean 定义无效
在 Spring Boot 应用程序中使用 API 网关时,HATEOAS 路径无效