次の Spring Bean を持つ Hibernate/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 アノテーションを使用して、エンティティ/関係をマッピングします。問題に関連するドメイン クラスの applicationContext.xml で Bean 定義が宣言されていません。これは、静的ファクトリ メソッドとプライベート コンストラクタを持つ必要がある pojo です。
Hibernate (私が推測する org.springframework.spring-orm.hibernate3 クラス) でコンストラクターの代わりに静的ファクトリー メソッドを使用するにはどうすればよいでしょうか? または、必要に応じてプライベートコンストラクターを呼び出すようにしますか?
spring factory-method 構成を使用することは理にかなっていますが、エンティティは applicationContext.xml で Bean としてマップされていません。これらは、Hibernate の永続性のために @Entity アノテーションでのみアノテーションが付けられます。
この編集により、質問が(わかりにくくなるのではなく)明確になることを願っています。:)