我的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,但这导致了许多问题,我宁愿保持尽可能接近我使用的版本。
答案 0 :(得分:1)
不确定org.hibernate:hibernate依赖项应该引用什么。但这肯定不是我们(Hibernate团队)制作的jar。
你应该很好地指定org.hibernate:hibernate-entitymanager依赖项。它实际上会传递org.hibernate:hibernate-core transitively。这些应该升级到3.5 +