0

私のSQLデータベースには「Item」テーブルがあります。各「アイテム」には、多くの代替ラベルを付けることができます。これらは「ItemAltLabel」と呼ばれる別のテーブルに保存されます。外部キーは「ItemID」です。

私はこれをJavaで、文字列の代替ラベルのセットを持つエンティティとして表現しようとしています。

私の財産は次のようになります:

@ElementCollection
@CollectionTable(name="ItemAltLabel", joinColumns=@JoinColumn(name="ItemID"))
@Column(name="Label")
private Set<String> alternateLabels;

これは正しいはずですか?

私が得るエラーは次のとおりです。

org.springframework.beans.factory.BeanCreationException:「entityBroker」という名前のBeanの作成中にエラーが発生しました:自動配線された依存関係の挿入に失敗しました。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:フィールドを自動配線できませんでした:protected org.hibernate.SessionFactory com.porism.dao.BaseBroker.sessionFactory; ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:ServletContextリソース[/WEB-INF/springmvc-servlet.xml]で定義された「sessionFactory」という名前のBeanの作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました。ネストされた例外はorg.hibernate.MappingExceptionです:次のタイプを判別できませんでした:java.util.Set、列の場合:[org.hibernate.mapping.Column(Label)]

この投稿を見つけました。これは、使用しているHibernateのバージョンのバグであることを示唆しています。

http://blog.m1key.me/2010/06/orghibernatemappingexception-could-not.html

「同様の状況でこのエラーが発生する場合、その理由はHibernate実装のバグであり、新しいものを取得する必要があります(3.5.3-Final以降をお勧めします)。」</ p>

私のpomファイルは3つの休止状態の依存関係を参照しています:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate</artifactId>
  <version>3.2.5.ga</version>
</dependency>
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>3.3.2.GA</version>
</dependency>
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>3.3.2.GA</version>
</dependency>

私はこれらを3.5.3-Finalに更新しようとしました(投稿が示唆しているように)。

私のリポジトリは次のようになります。

http://ftp.ing.umu.se/mirror/eclipse/rt/eclipselink/maven.repoeclipselinkデフォルトライブラリライブラリのリポジトリ[eclipselink]http://download.java.net/maven/2/hibernate-support defaultライブラリのリポジトリLibrary[hibernate-support]

プロジェクトをビルドしようとしたときに発生するエラーは次のとおりです。

プロジェクトの目標の実行に失敗しましたInformWebServices:プロジェクトの依存関係を解決できませんでしたporism:InformWebServices:war:1.0:アーティファクトorg.hibernate:hibernate:jar:3.5.3-Final from / to eclipselink(http://ftp。 ing.umu.se/mirror/eclipse/rt/eclipselink/maven.repo):http://ftp.ing.umu.seへの接続が拒否されました接続がタイムアウトしました:接続->[ヘルプ1]

hibernate 3.5.3-Finalへの依存関係を削除すると、他の2つの依存関係は正常にダウンロードされます。プロジェクトが構築されます。しかし、新しいエラーが表示されます:

org.springframework.beans.factory.BeanCreationException:「entityBroker」という名前のBeanの作成中にエラーが発生しました:自動配線された依存関係の挿入に失敗しました。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:フィールドを自動配線できませんでした:protected org.hibernate.SessionFactory com.porism.dao.BaseBroker.sessionFactory; ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:ServletContextリソース[/WEB-INF/springmvc-servlet.xml]で定義された「sessionFactory」という名前のBeanの作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました。ネストされた例外はjava.lang.NoClassDefFoundErrorです:クラスorg.hibernate.cfg.AnnotationConfigurationを初期化できませんでした

NetBeans7.1.2とMavenを使用しています。

おそらくお分かりのように、私はプロジェクトを手渡されており、私が何をしているのか見当がつかない。どんな助けでも大歓迎です。

hibernate 4にアップグレードしようとしましたが、これにより多くの問題が発生しました。使用していたバージョンにできるだけ近い状態を維持したいと思います。

4

1 に答える 1

1

org.hibernate:hibernateの依存関係が何を参照するのかわからない。しかし、それは確かに私たち(Hibernateチーム)が作成する瓶ではありません。

org.hibernate:hibernate-entitymanagerの依存関係だけを指定すれば問題ありません。実際には、org.hibernate:hibernate-coreを推移的に取り込みます。そして、これらは3.5+にアップグレードする必要があるものです

于 2012-05-16T22:04:38.860 に答える