Альтернативы MappedSuperclass в Grails - PullRequest
2 голосов
/ 04 декабря 2008

Во многих прошлых проектах я использовал этот JPA / Hibernate подход для добавления возможностей аудита в систему. Это очень эффективно и ненавязчиво.

Существует ли альтернатива Grails @MappedSuperclass (если не считать кодирование объектов модели домена в Java вместо Groovy)? Как можно объявить родительский класс в подходе «таблица на подкласс», не создавая таблицу для него? Я прочитал документацию GORM ( 5.2.3 Наследование в GORM ), но кроме обсуждения таблица-на-иерархию и таблица-на-подкласс, я не нашел подробностей о том, как это сделать.

В качестве альтернативы, каков рекомендуемый способ достижения этого типа одитинга в Grails?

1 Ответ

4 голосов
/ 07 декабря 2008

ОК, немного больше поискал, и я ответил на свой вопрос:)

По сути, это так же просто, как объявление MappedSuperclass как абстрактного, и Grails не создаст для него таблицу. я перечитал руководство (RTFM в основном ... творит чудеса): «GORM поддерживает наследование как от абстрактных базовых классов, так и от конкретных постоянных сущностей GORM». То есть конкретные классы являются постоянными, а абстрактные - нет. Платит, чтобы читать более внимательно.

1007 * Е.Г. *

abstract class Auditable {
    Date dateCreated
    Date lastUpdated
}

class Book extends Auditable {
    String title
    String description
}

Будет создана только таблица книг, и она будет иметь

date_created

и

LAST_UPDATED

столбцы. Кроме того, в качестве дополнительного бонуса свойства dateCreated и lastUpdated имеют автоматическую отметку времени от Grails.

Надеюсь, это поможет другим.

...