2008-12-04 74 views
1

在過去的很多項目中,我使用JPA/Hibernate方法爲系統添加審計功能。這是非常有效和不顯眼的。Grails中的MappedSuperclass替代方案

是否有Grails @MappedSuperclass替代方案(在Java中代替Groovy編碼域模型對象)?如何在沒有爲其創建表的情況下以每個子類的方式聲明父類?我已經閱讀了GORM文檔(5.2.3 Inheritance in GORM),但除了table-per-hierarchy和table-per-subclass討論之外,我沒有找到有關如何執行此操作的任何細節。

或者,在Grails中實現這種類型的審計的推薦方式是什麼?

+1

是的,因爲某些原因,這在Grails 2中可以工作了嗎?Abstract類有自己的表定義嗎?已經在Grails論壇上提出過問題,但似乎沒有人知道爲什麼這已經發生了變化。 任何人都知道爲什麼或知道解決方法或設置? – 2012-03-04 10:22:06

回答

4

OK,沒多一點點搜索,我回答我自己的問題:)

從本質上講,它是爲宣佈MappedSuperclass爲抽象和Grails不會爲它創建一個表一樣簡單。我通過re-reading the manual來實現(RTFM基本上......工作奇蹟):「GORM支持從抽象基類和具體持久GORM實體的繼承。」即具體的類是持久的,所以抽象的不是。支付更仔細閱讀。

E.g.

abstract class Auditable { 
    Date dateCreated 
    Date lastUpdated 
} 

class Book extends Auditable { 
    String title 
    String description 
} 

只有書表將被創建,它將有

DATE_CREATED

LAST_UPDATED

列。此外,作爲額外的獎勵,Grails提供的dateCreated和lastUpdated屬性爲auto time-stamped

希望這可以幫助別人。

+4

這個實現不適用於Grails 2.0:( – 2012-01-14 07:09:19