次の Hibernate Exception を受け取ります。
org.hibernate.AnnotationException: @OneToOne or @ManyToOne on cz.rohan.dusps.model.Switchport.konfiguracniTemplateAccess references an unknown entity: cz.rohan.dusps.model.KonfiguracniTemplate
org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:103)
org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:541)
org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:523)
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:380)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
cz.rohan.dusps.helper.SessionFactoryHelper.initFactory(SessionFactoryHelper.java:122)
cz.rohan.dusps.helper.SessionFactoryHelper.getSessionFactory(SessionFactoryHelper.java:134)
cz.rohan.dusps.filter.HistorieZmenFilter.doFilter(HistorieZmenFilter.java:102)
cz.rohan.dusps.filter.CharsetFilter.doFilter(CharsetFilter.java:41)
さまざまな人々との問題に 20 時間ほど費やした後、考えられるすべてのブログやフォーラムを読んだ後、私はここで本当に必死になっています。
これは中規模のプロジェクトです。データベースは Postgres 9.1 であり、モデリング ツールを使用して DB を生成します。Hibernate はデータベースに接続しますが、データベースを生成しません。
データベースに新しいエンティティを作成しました。これは「KonfiguracniTemplate」(構成テンプレート) と呼ばれます。モデル、コントローラー、フォーム、バリデーター、.jsp を作成しましたが、基本的にはすべて、類似した性質の既存のエンティティーから 1:1 でコピーしました。KonfiguracniTemplate を使用できるようになりました。CRUD は完全に機能しています。
この KonfiguracniTemplate を Switchport というエンティティから参照すると、問題が発生します。DB には、2 つの関係があります。
- Switchport 1:1 ... 0:N KonfigracniTemplate (switchport は常に KonfigracniTemplate を参照します。KonfiguracniTemplate は 0 回以上参照される場合があります)
- Switchport には、この関係の FK konfiguracniTemplateAccess_id があります。
.../model/Switchport.java では、動作している他のすべての関係と同じように関係がマップされます。
@ManyToOne
@JoinColumn(nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
私はさまざまな形式を試しました:
@ManyToOne
@JoinColumn(name="konfiguracnitemplateaccess_id", nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
また
@ManyToOne(targetEntity=KonfiguracniTemplate.class)
@JoinColumn(name="konfiguracnitemplateaccess_id", nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
私もチェックしました:
- 両方のエンティティが同じパッケージに含まれています
- どちらも「import javax.persistence.Entity;」を使用して「@Entity」アノテーションが付けられています。
- ビルドはエラー/警告メッセージを生成しません
- Switchport の参照がコメントアウトされている限り、すべて問題ありません
何を試しても、「不明なエンティティを参照しています」という例外を取り除くことはできません。誰かが何が起こっているのか、または問題をデバッグする方法を共有できますか? 投稿の上部にあるスタック トレースだけがログに記録されます。
すべての入力は大歓迎です!