Могу ли я создать Hibernate для создания объекта с помощью метода factory?

Есть ли способ сопоставить метод factory в Hibernate (в отличие от того, что Hibernate вызывает конструктор по умолчанию и отражает свойства или поля)?

И если он не может быть сопоставлен, Hibernate предоставляет привязку для создания пользовательских объектов в классе по классам?

Спасибо!

Ответы

Ответ 1

Это можно сделать с помощью:

Я думаю, что подход Interceptor проще. Вот javadoc Interceptor.instantiate():

/**
 * Instantiate the entity class. Return <tt>null</tt> to indicate that Hibernate should use
 * the default constructor of the class. The identifier property of the returned instance
 * should be initialized with the given identifier.
 *
 * @param entityName the name of the entity
 * @param entityMode The type of entity instance to be returned.
 * @param id the identifier of the new instance
 * @return an instance of the class, or <tt>null</tt> to choose default behaviour
 */
public Object instantiate(String entityName, EntityMode entityMode, Serializable id) throws CallbackException;

Ответ 2

Посмотрите на UserType, Вам нужно будет вызвать ваш factory в nullSafeGet() и заполнить все поля самостоятельно. Обратная работа выполняется в nullSafeSet().

Ответ 3

И если он не может быть отображен, Hibernate обеспечивает крючок для пользовательских создание объекта в классе по классу основа?

Проверьте слушателей сущностей. Они добавляют только аннотации, которые помогут вам. Подумайте @PrePersist или @PostLoad.

Ответ 5

Я не знаю, правильно ли я понял, о чем вы просите, но я думаю, что здесь описывается решение (см. решение 4 - Перехватчик Hibernate, метод onLoad): "Разработка домена с помощью Spring и спящего режима" http://www.jblewitt.com/blog/?p=129