мы можем иметь несколько псевдонимов для атрибута класса домена в Grails - PullRequest
1 голос
/ 28 марта 2012

В моем приложении много классов доменов, и для ведения журнала аудита мне нужен атрибут name каждого класса Domain.к сожалению, атрибут name не является общим для всех доменов.
В моем классе журнала аудита я получаю тип объекта, который был изменен / создан / удален, и затем сохраняю идентификатор прямо сейчас (это обычный код, поскольку все домены имеют атрибут 'id'), но теперь, если я хочу получить атрибут именивне домена от идентификатора, у каждого домена есть свой атрибут name, например, у Resource Domain есть resourceName, у домена User есть userName и т. д., поэтому мне придется обрабатывать каждый домен отдельно (например, иметь карту или несколько операторов switch)для получения атрибута name из имени класса Domain).
Есть ли способ, которым я могу иметь сопоставление псевдонимов для каждого поля имени домена, которое будет называться «name».не должно быть никаких изменений в фактических атрибутах в Доменах при любых изменениях, которые я делаю, я могу добавить столбец в Домен аудита, но не другие изменения таблицы.
Заранее спасибо

1 Ответ

2 голосов
/ 28 марта 2012

Я не думаю, что есть способ сделать это автоматически.

Как вы уже догадались, вам придется либо изменить все доменные объекты, чтобы они имели атрибут 'name', либо каким-либо образом поддерживать карту, атрибут которой в каждом классе должен рассматриваться как 'name' .

Я полагаю, что одним из ответов может быть добавление метода getName () к каждому из классов домена и возвращение соответствующего значения из этого метода.

Если вы действительно не хотите изменять доменные объекты вообще, вы можете использовать Groovy мета-объектное программирование (MOP) для внедрения этого метода в каждый класс домена из класса BootStrap.

...