У нас есть приложение Hibernate / Spring, которое имеет следующие компоненты Spring:
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" />
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" />
При соединении приложения мы получаем следующую ошибку при использовании частных конструкторов в наших спящих объектах:
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No visible constructors in class 'ourclass'
Объекты - это типичные доменные объекты, такие как Сотрудник или тому подобное.
При изменении модификатора видимости конструктора на пакет (или общедоступный) приложение работает нормально, а сущности сохраняются / загружаются в базу данных. Как мы / можем ли мы использовать частные конструкторы / статические фабричные методы с управлением транзакциями Spring / Hibernate?
Мы используем аннотации Hibernate для отображения сущностей / отношений. Не определены определения bean-компонентов в applicationContext.xml для класса домена, который связан с проблемой. Это ПОЖО, которое должно иметь статический метод фабрики и закрытый конструктор.
Как мы можем заставить Hibernate (классы org.springframework.spring-orm.hibernate3, я полагаю) использовать метод статической фабрики вместо конструктора? Или, если необходимо, сделать так, чтобы он вызывал приватный конструктор?
Использование весенней конфигурации фабричного метода имело бы смысл, но сущности не отображаются как бины в нашем applicationContext.xml. Они аннотируются только аннотацией @Entity для сохранения Hibernate.
Надеюсь, что это изменение прояснит (а не загадит) вопрос. :)