在 Spring Boot JPA 中找不到实体列名称

Posted

技术标签:

【中文标题】在 Spring Boot JPA 中找不到实体列名称【英文标题】:Entity column named not found in Springboot JPA 【发布时间】:2022-01-22 04:28:52 【问题描述】:

我正在使用 SpringBoot,并且我有一个实体类,它具有一些值,例如:

private int a;
private String b;
private int c;

@Column(nullable = true)
private int d;

我在我的存储库中使用本机查询,并且我正在使用“as”关键字向该查询添加一个新列。比如:

a+c 为 d。

当我执行这个本机查询时,我遇到了一个错误“在表 t 中找不到列 d”。

【问题讨论】:

请添加一个带有类和参数名称的完整查询示例。您是什么意思我正在向该查询添加一个新列 我的意思是像在 sql 中 Select (a + c) as d 我的意思是它是简单的 SQL 作为用法我在实体方面遇到错误它说表 t 中没有 d 字段并且是的,我没有 d 列,也不想添加它。 你确定你从“那个”查询中得到了那个异常吗?如果数据库中没有“d”列,则 JPA 无法使用定义的实体,所以我不知道您为什么要尝试以这种方式定义它。尝试构造函数查询,在其中为 java 类提供一个构造函数,该构造函数可以接收您的数据类型以让 JPA 构建它,而不是尝试构建它必须在不存在的列上管理的实体。否则,完全按照您的定义显示代码和查询,并通过 JPA/Spring 执行它。 我正在使用嵌套 sql 查询 我还有其他一些表 我从嵌套查询中获取一个变量,在 sql 中我可以用“as”关键字命名它,这意味着我可以看到一个额外的值那没有放在我的 t 表中。我想得到这个值并在 spring boot 中使用它。我做了一些研究,我相信我需要像“瞬态”这样的东西,但它没有按预期工作,它总是返回 0。 【参考方案1】:

您可以尝试使用以下语句:

SELECT CONCAT(a, ' ', c) AS d FROM t

您能否也分享一下您用于获取该数据的确切查询?

【讨论】:

我正在使用嵌套 sql 查询 我还有其他一些表 我从嵌套查询中获取一个变量,在 sql 中我可以用“as”关键字命名它,这意味着我可以看到一个额外的值那没有放在我的 t 表中。我想得到这个值并在 spring boot 中使用它。我做了一些研究,我相信我需要像“瞬态”这样的东西,但它没有按预期工作,它总是返回 0

以上是关于在 Spring Boot JPA 中找不到实体列名称的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot:仅访问 JPA 中的关联列值而不获取完整的关联实体

在 Spring Boot 应用程序中找不到类型现金流的属性日期

Spring Boot JPA:将一个实体映射到具有相同列的多个(很多)表

Spring Boot Jpa框架自定义查询语句返回自定义实体

Spring Boot Jpa JPQL 选择除特定列之外的列

Spring boot JPA - 使用额外的列查询多对多