在JPA Hibernate中映射队列集合

blo*_*lob 3 java hibernate jpa-2.0

是否可以在JPA/hibernate中进行以下集合映射

@OneToMany(cascade={CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE},
fetch=FetchType.LAZY,mappedBy="parent")

private Deque<Child> childrens;
Run Code Online (Sandbox Code Playgroud)

它抛出错误

Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements
Run Code Online (Sandbox Code Playgroud)

我正在使用JPA 2.0和Hibernate 3

Mik*_*unu 6

不,JPA不支持Deque.在JPA 2.0规范中,这将按以下方式解释:

必须根据以下集合值接口之一定义集合值持久字段和属性,无论实体类是否遵守上述JavaBeans方法约定以及是否使用字段或属性访问: java.util.Collection ,java.util.Set,java.util.List [3],java.util.Map.应用程序可以使用集合实现类型在实体持久化之前初始化字段或属性.一旦实体被管理(或分离),后续访问必须通过接口类型.

我建议添加提供所需Deque功能的实体方法(或将视图显示为Deque到持久列表).其他可能性是评论中建议的自定义收集(Thor84no).