Как сгенерировать GUID по запросу в спящем режиме? - PullRequest
1 голос
/ 06 мая 2011

Я хочу создать идентификатор GUID, если пользователь не дал имя для COMPONENT,

@Entity class Component {

    @Id @Column(length = 32)
    String name; 

}

Я не могу использовать генератор здесь, поэтому я могу явно указать имя.

Хотя я могу добавить другое поле идентификатора и сделать имя как @NaturalId:

@Entity class Component {

    @Id
    Long id;

    @Column(length = 32)
    String name; 

}

Но вопрос все же: как мне сгенерировать GUID для имени?

Я сам могу написать простой генератор GUID, но я хочу сделать это способом Hibernate.

1 Ответ

1 голос
/ 06 мая 2011

Попробуйте взглянуть на EmptyInterceptor, я думаю, что вы можете перехватить событие onSave, обновить свое "имя", если оно не установлено.

Просто используйте класс UUID, чтобы сгенерировать то, что вам нужно, я думаю, что оно покроет это.

GUID в случае Hibernate будет использовать базу данных для генерации GUID в случае mySql и MSSS (я думаю)

Вы можете расширить область применения приложения-перехватчика или только для определенного сеанса.

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/events.html#objectstate-interceptors

Надеюсь, что это работает для вас.

...