JPA 中的联合并使用 Alias

Union in JPA and using Alias

我有 2 个实体,PERSONPEOPLE

PERSON 有列,即 -> FN、LN

PEOPLE 有列 -> FIRST、LAST

我想获取两个表的并集。我如何在 JPA 中执行此操作。 我使用了以下方式:

创建了一个新的 DTO -> Human 有 2 个字段 FIRSTNAME 和 LASTNAME(区分大小写)

@Query(value=" SELECT FIRSTNAME, LASTNAME FROM "+
  "(  SELECT "+
  "      P.FN AS FIRSTNAME, "+
  "      P.LN AS LASTNAME " +
  " FROM PERSON P"+
  " UNION "+
  " SELECT "+
  "      A.FIRST AS FIRSTNAME, "+
  "      A.LAST AS LASTNAME ' +
  " FROM PEOPLE A"+
  ")", nativeQuery = true)
Pageable<Human>  getEntireHumanRace() {
.... 
}

SQL 运行良好,但 ORM 总是形成格式错误 SQL 例如“SQL 语句中的语法错误 SELECT COUNT(P) FROM PERSON P ....” InvalidDataAccessResourceUsageException:无法准备语句

有什么可以做的建议吗?为什么它将计数放在生成的查询前面? 提前打赏。

Why does it put the count in front of the generated query?

因为您正在尝试使用分页获取数据 (Pageable)。因此对于执行的总元素计数 Count 查询。

Is there any suggestion on what can be done?

您正在使用基于 class 的投影并使用 List<Human>

@Query(value="SELECT FIRSTNAME, LASTNAME FROM ...")
List<Human> getEntireHumanRace();