spring + hibernate совместное использование свойств и аннотаций

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

У меня есть некоторые компоненты сущности 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 для настройки? Могу ли я сделать это только через аннотации?


person gpilotino    schedule 01.02.2012    source источник


Ответы (1)


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

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

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

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


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

person Ralph    schedule 01.02.2012
comment
Спасибо. о я имею в виду некоторое объявление AspectJ Intertype, которое добавляет поле идентификатора Id...private Spring к каждому классу, имеющему аннотацию Entity. у вас есть образец кода? - person gpilotino; 02.02.2012