当我省略 table 别名时,为什么 Spring JPA @Query return 会出错?

Why does Spring JPA @Query return an error when I omit the table alias?

我正在使用 Spring Data JPA 通过非常简单的查询来查询 PostgreSQL table:

@Query(value = "SELECT id FROM location l", nativeQuery = true)

这很好用。但是,如果我省略 table 别名并使用:

@Query(value = "SELECT id FROM location", nativeQuery = true)

我收到一条错误消息 No Dialect mapping for JDBC type: 1111。 ID 在 PostgreSQL 和 DTO 中都是 UUID。

为什么会这样?据我所知,这是一个完全有效的查询,我什至没有在工作版本中使用 table 别名。添加 @Type@TypeMapping 没有区别。我查了我查询的数据,所有ID都有效

现在我很高兴使用别名,因为我已经弄明白了,但我很好奇幕后发生了什么导致失败。

Spring Data JPA 会尝试解析您的查询以派生计数查询或 add/modify 和 ORDER BY 子句。 这在某种程度上依赖于查询的主要 table/entity 的别名。

它应该给你一个正确的错误,它找不到别名,而不是你看到的奇怪错误。