【发布时间】:2021-07-13 07:17:05
【问题描述】:
我想在 SQL Server 中编写递归查询。所以我正在使用CTE。查询在 SSMS 中正常工作,但是当我尝试在 JPA 中使用与本机 SQL 相同的 CTE 时,它会出现错误:
名称列 ID 无效。
实体(我在 CTE 中用于递归获取数据)具有 @Id @Column(name="pk_id") private int Id 字段。
我也关注了这个 SOQ:cte sql to simple subset query for JPA
但仍然收到错误,因为名称列 ID 无效。
我以前从未使用过 CTE。如何解决这个问题?
【问题讨论】:
-
CTE 不适用于 JPQL,您需要改用 SQL。
-
如何使用递归SQL但是?
-
只需将SQL放入并将
native-query设置为true即可。 -
是的,我试过了。
@Query(value = "sql here",nativeQuery = true)并得到同样的错误。但是在native-query中,我尝试了link 中提到的SQL。可以吗? -
问题是,如果您将结果与 JPA 实体匹配,则结果列必须与映射匹配。看起来这在您的结果集中已关闭。
标签: sql-server spring-boot jpa spring-data-jpa common-table-expression