Spring + Hibernate обмена свойствами и аннотациями - PullRequest
0 голосов
/ 01 февраля 2012

Вопрос новичка.

У меня есть некоторые бины сущностей Spring / Hibernate, определенные так:

@RooJavaBean
@RooJpaEntity
public class MyEntity {     
    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    @org.hibernate.annotations.Type(type="uuid-char")
    private String id;

    ...
}

Я хочу, чтобы ВСЕ мои сущности имели поле Id, определенное точно так же, как и выше.Каков наилучший способ обмена свойствами между компонентами?(Я предпочитаю не расширять общий абстрактный класс и, возможно, не возвращаясь к aop).

Есть ли какой-то "шаблон сущности" Hibernate для настройки?Могу ли я сделать это только с помощью аннотаций?

1 Ответ

1 голос
/ 01 февраля 2012

Нет, в Hibernate и основной Java нет способа, кроме как наследовать класс от общего суперкласса (@MappedSuperclass).

Причина, по которой это невозможно, заключается в том, что вам нужен класс с этим полем (java) поэтому hibernate не может изменить стандартное поведение java.

Но с помощью AspectJ вы можете.В некотором роде Spring-Roo добавьте значение id, которое вы можете сделать в собственном совете AspectJ.

Я имею в виду объявление AspectJ Intertype, которое добавляет поле @Id...private Spring id к каждому классу, который имеет @Entity аннотация.


С другой стороны, у меня такое ощущение, что это слишком сильно.Я лично использую шаблон в своей IDE, поэтому мне не нужно писать все вещи.И это хорошо для меня.

...