2012-02-01 4 views
0

Новый вопрос.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).

Есть ли какой-нибудь шаблон сущности «Гибернация» для настройки? Могу ли я сделать это только через аннотации?

ответ

1

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

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

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

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


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

+0

спасибо. о «Я имею в виду некоторую декларацию AspectJ Intertype, которая добавляет поле Id ... private Spring id для каждого класса, у которого есть аннотация Entity». у вас есть образец кода? – gpilotino