@Formula - Hibernate 中的本机查询语法错误

Hop*_*ing 2 java mysql spring hibernate jpa

我有 FullProduct 和 PartValue 之间的一对多关系(一个完整产品有很多 PartValue)

我正在尝试使用下面的 @Formula 注释 - 语法似乎是正确的,因为我在命令行中运行它并给出了正确的结果。

@Formula("select sum(pv.total_value) from part_value pv inner join full_product fp on fp.full_product_id=pv.full_product_id")
private Float totalAmount;
Run Code Online (Sandbox Code Playgroud)

但是,当我在 Spring JPA/Hibernate 中运行它时,出现以下错误

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“select sum(pv.total_value) from part_value pv inner join full_product fp on fp.full_product_id=pv.full_product_id”附近使用正确的语法

错误日志中没有其他内容,这似乎指向了正确的方向。

我很困惑 - 如果命令行中的 SQL 语法运行良好,为什么 Spring/Hibernate 会抛出这个错误。有人可以帮忙吗?

感谢您的指点。

Sta*_*avL 5

尝试为子查询添加()

@Formula("(select sum(pv.total_value) from part_value pv inner join full_product fp on fp.full_product_id=pv.full_product_id)")
private Float totalAmount;
Run Code Online (Sandbox Code Playgroud)

因为它被翻译成类似的东西

select
  entityAlias1.field1,
  entityAlias1.field2,
  ...
  (select sum(pv.total_value) from part_value pv inner join full_product fp on fp.full_product_id=pv.full_product_id),
  ...
from the_entity_table entityAlias1
...
Run Code Online (Sandbox Code Playgroud)

没有 () 语法是错误的。