2012-05-16 45 views
0

我的SQL數據庫有一個「Item」表。每個「項目」可以有許多替代標籤。這些存儲在另一個名爲「ItemAltLabel」的表中。外鍵是「ItemID」。Hibernate,(netbeans 7.1.2,maven)無法使用ElementCollection屬性

我想在java中將其表示爲具有一組字符串替代標籤的實體。

我的財產是這樣的:

@ElementCollection 
@CollectionTable(name="ItemAltLabel", [email protected](name="ItemID")) 
@Column(name="Label") 
private Set<String> alternateLabels; 

如果這是正確的嗎?

我得到的錯誤是:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityBroker': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected org.hibernate.SessionFactory com.porism.dao.BaseBroker.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/springmvc-servlet.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.Set, for columns: [org.hibernate.mapping.Column(Label)]

我發現這個職位,這表明它處於休眠的版本中的錯誤,我使用:

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

「如果你是在類似的情況下得到這個錯誤,原因是你的Hibernate實現中存在一個錯誤,你應該得到一個更新的錯誤(我推薦3.5.3-最終或更高版本)。「

我的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決賽(視後建議)。

我的資料庫是這樣的:

http://ftp.ing.umu.se/mirror/eclipse/rt/eclipselink/maven.repo 的EclipseLink 默認 存儲庫庫庫[的EclipseLink ] http://download.java.net/maven/2/ 休眠支持 默認 存儲庫庫庫[休眠支持]

試圖建立項目時,我得到的錯誤是:

Failed to execute goal on project InformWebServices: Could not resolve dependencies for project porism:InformWebServices:war:1.0: Could not transfer artifact org.hibernate:hibernate:jar:3.5.3-Final from/to eclipselink (http://ftp.ing.umu.se/mirror/eclipse/rt/eclipselink/maven.repo): Connection to http://ftp.ing.umu.se refused: Connection timed out: connect -> [Help 1]

如果我刪除有關休眠3.5.3決賽的依賴,另外兩個依賴被成功下載。項目建立;但出現新錯誤:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityBroker': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected org.hibernate.SessionFactory com.porism.dao.BaseBroker.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/springmvc-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.cfg.AnnotationConfiguration

我使用的是NetBeans 7.1.2和maven。

正如你可能知道的那樣,我已經遞交了一個項目,並且不知道我在做什麼。任何幫助將不勝感激。

我已經嘗試升級到休眠4,但這導致了一系列問題,我寧願保持儘可能接近我使用的版本。

回答

1

不確定org.hibernate:hibernate依賴關係應該引用什麼。但這絕對不是我們(Hibernate團隊)產生的瓶子。

你應該很好的指定org.hibernate:hibernate-entitymanager依賴。它實際上會傳入org.hibernate:hibernate-core。這些都是應該升級到3.5 +

+0

感謝您的幫助。我發現org.hibernate:hibernate是一個pom文件,需要一個 pom。我還必須添加一個依賴到org.slf4j:slf4j-log4j12(1.5.0) – zod