2012-04-28 35 views
0

在这个doc我们可以看到例如使用@CollectioTable注释的Java EE的例子不工作

我写了相同的代码

@Entity public class Person { 
     @ElementCollection 
     @CollectionTable(name="HOMES", joinColumns = @Column(name = "PERSON_ID")) 
     @Column(name="HOME_STATE") 
     protected List<String> vacationHomes; 
     ... 
    } 

Usinf 的Hibernate JPA-2版本1.0.0.Final

部署在JBoss 4.3.0.GA

并获得异常(同时部署),即column HOME_STATE cann't be mapped on java.util.List

所以我改变清单ArrayList的

该应用程序部署好后。
但行不通!我执行简单的查询,但注释@ElementCollection@CollectionTable被忽略!仅工作@Column注释

可能是旧的JBoss版本的问题?
我不知道问题所在......

+0

'java.utils.List'是一个错字还是一个自定义List类? – dimcookies 2012-04-28 11:53:51

+0

这是一个错字号 – Ilya 2012-04-28 12:31:28

回答

3

属于JPA 2.0的功能无法正常工作。这是因为缺少实施。在这种情况下,只有新的注释存在,但没有处理(hibernate-jpa-2.0-api-1.0.0.Final只是JPA 2.0接口,而不是实现)。

根据releases notes JBoss 4.3.0.GA附带Hibernate 3.2.1,它不是JPA 2.0实现。

对于JBoss 5来说,使其运行起来也是不可能的,因为您可以从this question中读取它。如果您至少不能更新到JBoss 6.x,那么使用JPA 1更容易。

+0

太糟糕了。 '@ElementCollection'自JPA 2开始,但我使用的是JBoss 4.3.0.GA :-( – Ilya 2012-04-28 19:56:54

+0

)使用hibernate xml映射我也不能使用Element-Collection? – Ilya 2012-04-28 21:20:13

+0

同样的限制,但是如果你准备放弃JPA兼容性和使用Hibernate特定的解决方案,CollectionOfElements可能是答案。看起来它是hibernate注释3.2.1的一部分:http://www.jarvana.com/jarvana/view/org/hibernate/hibernate-annotations/3.2.1。 GA /休眠的注解 - 3.2.1.ga.jar!/org/hibernate/annotations/CollectionOfElements.class?classDetails = OK – 2012-04-29 11:28:26