2015-04-02 31 views
0

我正在使用EMF和Teneo。我有一個帶有派生屬性的Employee類。我還定義了一個休眠@Formula註解吧如下:如何在Teneo/EMF中使用@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\")'" 

我期待查詢射擊每當我通過調用加載Employee對象到.LIST()。

但是,計算派生屬性的查詢從不觸發(檢查mysql日誌)。

關於我在做什麼錯的任何想法或任何指向哪裏看?

回答

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)\")'" 

換句話說,屬性

  • 不能是瞬態的(false),否則在teneo生成映射時這是完全忽略的(這就是爲什麼註釋被忽略)
  • 必須是多變的(這樣的屬性值可設定)

而且SQL語句應該是在括號中,因爲Hibernate會生成一份聲明如

select field1, field2, (select count (*) from Employe o where  
         o.parent_e_id_e_id) as fieldname from table1 ...