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

时间:2017-06-16 14:04:56

标签: java mysql spring hibernate jpa

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

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

bin/mallet prune --help

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

  

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;查看与您的MySQL服务器版本相对应的手册,以便在第1行的fp.full_product_id = pv.full_product_id'上的part_value pv内部联接full_product fp的'select sum(pv.total_value)附近使用正确的语法

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

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

感谢您的任何指示。

1 个答案:

答案 0 :(得分:4)

尝试为子查询添加()

@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;

因为它被翻译成类似

的东西
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
...

没有()语法错误。