我正在使用EMF和Teneo。我有一个带有派生属性的Employee类。我还为它定义了一个Hibernate @Formula注释,如下所示:
* @model
* default="0" transient="true" changeable="false"
* derived="true" ordered="false"
* annotation="teneo.jpa
* appinfo=' @Formula(\"select count(*) from Employee o where o.parent_e_id =e_id\")'"
每当我通过调用.list()加载Employee对象时,我都希望触发查询。
但是,计算派生属性的查询永远不会触发(检查mysql日志)。
关于我做错了什么的任何想法或关于在哪里看的任何指示?
答案 0 :(得分:1)
我正在回答我自己的问题,因为我找到了解决方案而其他人可能需要它
属性必须定义如下:
* @model default="0" derived="true" ordered="false"
* annotation="teneo.jpa
appinfo=' @Formula(\"(select count(*)
from Employee o where o.parent_e_id=e_id)\")'"
换句话说,属性
此外,SQL语句应该在括号中,因为hibernate会生成一个语句,例如
select field1, field2, (select count (*) from Employe o where
o.parent_e_id_e_id) as fieldname from table1 ...