Hibernate,(netbeans 7.1.2,maven)无法使用ElementCollection属性

时间:2012-05-16 18:17:56

标签: hibernate maven netbeans netbeans-7 entitycollection

我的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:不能   autowire字段:protected org.hibernate.SessionFactory   com.porism.dao.BaseBroker.sessionFactory;嵌套异常是   org.springframework.beans.factory.BeanCreationException:错误   在ServletContext中定义名为'sessionFactory'的bean   resource [/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       默认       库的库[eclipselink]                 http://download.java.net/maven/2/       休眠支持       默认       库库[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的连接被拒绝:连接超时:   连接 - &gt; [帮助1]

如果删除对hibernate 3.5.3-Final的依赖,则会成功下载其他两个依赖项。该项目建立;但是出现了一个新错误:

  

org.springframework.beans.factory.BeanCreationException:错误   创建名为'entityBroker'的bean:注入自动装配   依赖失败;嵌套异常是   org.springframework.beans.factory.BeanCreationException:不能   autowire字段:protected org.hibernate.SessionFactory   com.porism.dao.BaseBroker.sessionFactory;嵌套异常是   org.springframework.beans.factory.BeanCreationException:错误   在ServletContext中定义名为'sessionFactory'的bean   resource [/WEB-INF/springmvc-servlet.xml]:调用init方法   失败;嵌套异常是java.lang.NoClassDefFoundError:不能   初始化类org.hibernate.cfg.AnnotationConfiguration

我正在使用NetBeans 7.1.2和maven。

你可能会说,我已经交了一个项目,并且不知道我在做什么。任何帮助将不胜感激。

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

1 个答案:

答案 0 :(得分:1)

不确定org.hibernate:hibernate依赖项应该引用什么。但这肯定不是我们(Hibernate团队)制作的jar。

你应该很好地指定org.hibernate:hibernate-entitymanager依赖项。它实际上会传递org.hibernate:hibernate-core transitively。这些应该升级到3.5 +