首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Teneo/EMF中使用@Formula注释

如何在Teneo/EMF中使用@Formula注释
EN

Stack Overflow用户
提问于 2015-04-03 05:17:45
回答 1查看 107关注 0票数 0

我正在使用EMF和Teneo。我有一个具有派生属性的Employee类。我还为它定义了Hibernate @Formula注释,如下所示:

代码语言:javascript
复制
    * @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日志)。

有没有关于我哪里做错了的想法,或者有什么关于去哪里找的建议?

EN

回答 1

Stack Overflow用户

发布于 2015-04-03 19:51:56

我正在回答我自己的问题,因为我已经找到了解决方案,而其他人可能需要它。

该属性必须定义如下:

代码语言:javascript
复制
    * @model default="0" derived="true" ordered="false"
    *        annotation="teneo.jpa 
             appinfo=' @Formula(\"(select count(*)
                       from Employee o where o.parent_e_id=e_id)\")'"

换句话说,该属性

  • 不能是瞬态的(false),否则在teneo生成映射时它将被完全忽略(这就是忽略批注的原因)
  • 必须是可更改的(以便可以设置属性值)

另外,SQL语句应该放在括号中,因为hibernate将生成如下语句

代码语言:javascript
复制
    select field1, field2, (select count (*) from Employe o where    
                        o.parent_e_id_e_id) as fieldname from table1 ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29422644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档