這個問題可能會暴露我缺乏的AspectJ的知識,但在這裏不用反正:)如何在Spring Roo DBRE生成的實體中定製setter?
我已經成功地使用Spring Roo的到數據庫的反向工程了一堆表格到一個新的Roo的項目。我希望能夠保持Roo的往返工程方面不會將我的方面「推」到普通的舊Java類中。但是,我正在遇到將值分配給Aspect中定義的成員字段的問題。
例如,我有一個RooDbManaged實體類,我們稱之爲X,Roo生成了一個方面:X_Roo_DbManaged。現在,我想爲字段'updateDate'定製一個setter,以便我可以在持久化時將日期指定爲當前日期。所以,我把我的自定義代碼的類X如下:
public void setUpdateDate(Date updateDate) {
this.updateDate = new Date();
}
這使得袋鼠從縱橫刪除二傳手,因爲我所期望的,因爲我現在已經在十
定義它這給了我一個錯誤: 如果我改變字段的可見性在X_Roo_DbManaged方面「公」(的東西,我寧願不做)領域X.updateDate是不可見的
,這解決了這個問題,直到Roo automatica lly重新生成導致錯誤再次發生的方面。
我的猜測是我錯過了一些非常明顯的事情,沒有人認爲它值得發佈,因爲我通常成功的谷歌搜索未能找到任何解決方案!
我應該補充一點,我的解決方法是通過將X_Roo_Controller移動到XController中並使用未修改的setter指定日期來自定義相關方法。這似乎是違反直覺的,因爲我真的很希望updateDate始終是當前設置的日期。有趣的是,Roo生成的@Temporal(TemporalType.TIMESTAMP)註釋在updateDate字段不提供此功能。我真的很希望能夠通過Roo命令告訴Roo某些DBRE字段應該具有這種行爲,而不必擔心本質上「管道」的含義。