【问题标题】:Hibernate, (netbeans 7.1.2, maven) unable to use ElementCollection attributeHibernate,(netbeans 7.1.2,maven)无法使用 ElementCollection 属性
【发布时间】:2012-05-24 08:34:30
【问题描述】:

我的 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 中定义的名称为“sessionFactory”的 bean 资源[/WEB-INF/springmvc-servlet.xml]:init方法的调用 失败的;嵌套异常是 org.hibernate.MappingException: 不能 确定类型:java.util.Set,列: [org.hibernate.mapping.Column(标签)]

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

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

“如果您在类似情况下遇到此错误,原因是您的 Hibernate 实现中存在错误,您应该获得更新的错误(我推荐 3.5.3-Final 或更高版本)。”

我的pom文件引用了3个hibernate依赖:

<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] http://download.java.net/maven/2/ 休眠支持 默认 库库的存储库[hibernate-support]

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

无法在 InformWebServices 项目上执行目标:无法解决 项目 porism 的依赖项:InformWebServices:war:1.0:不能 从/到传输工件 org.hibernate:hibernate:jar:3.5.3-Final 日食链接 (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 中定义的名称为“sessionFactory”的 bean 资源[/WEB-INF/springmvc-servlet.xml]:init方法的调用 失败的;嵌套异常是 java.lang.NoClassDefFoundError: 不能 初始化类 org.hibernate.cfg.AnnotationConfiguration

我正在使用 NetBeans 7.1.2 和 maven。

您可能会说,我接到了一个项目,但不知道我在做什么。任何帮助将不胜感激。

我已经尝试升级到 hibernate 4,但这导致了许多问题,我希望尽可能保持与我使用的版本接近。

【问题讨论】:

    标签: hibernate maven netbeans netbeans-7 entitycollection


    【解决方案1】:

    不确定 org.hibernate:hibernate 依赖项应该指的是什么。但这肯定不是我们(Hibernate 团队)生产的罐子。

    只指定 org.hibernate:hibernate-entitymanager 依赖项应该没问题。它实际上会传递 org.hibernate:hibernate-core 。这些是应该升级到3.5+的那些

    【讨论】:

    • 感谢您的帮助。我发现 org.hibernate:hibernate 是一个 pom 文件,需要一个 pom。我还必须添加对 org.slf4j:slf4j-log4j12 (1.5.0) 的依赖项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    相关资源
    最近更新 更多