0

我的 SQL 数据库有一个“项目”表。每个“项目”可以有许多替代标签。这些存储在另一个名为“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:无法自动装配字段:受保护的 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)]

我发现了这篇文章,这表明这是我正在使用的休眠版本中的一个错误:

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.repo eclipselink default Repository for library Library[eclipselink] http://download.java.net/maven/2/hibernate-support default库库的存储库[hibernate-support]

我在尝试构建项目时遇到的错误是:

无法在项目 InformWebServices 上执行目标:无法解析项目 porism 的依赖项:InformWebServices:war:1.0:无法将工件 org.hibernate:hibernate:jar:3.5.3-Final 从/到 eclipselink (http://ftp. ing.umu.se/mirror/eclipse/rt/eclipselink/maven.repo):连接到http://ftp.ing.umu.se被拒绝:连接超时:连接-> [帮助 1]

如果我去掉对hibernate 3.5.3-Final的依赖,其他两个依赖就下载成功了。项目建成;但出现了一个新错误:

org.springframework.beans.factory.BeanCreationException:创建名为“entityBroker”的bean时出错:注入自动装配的依赖项失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法自动装配字段:受保护的 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

我正在使用 NetBeans 7.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 回答