首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate @OneToMany inside @Embeddable

Hibernate @OneToMany inside @Embeddable
EN

Stack Overflow用户
提问于 2016-02-22 23:04:11
回答 1查看 2.1K关注 0票数 1

我有以下情况:

代码语言:javascript
复制
@Entity
class A {
    @ElementCollection
    private Set<B> setOfB;
}

@Embeddable
class B{
    @OneToMany
    private Set<C> setOfC;
}

@Entity
class C{
    private String name;
}

下面的这个问题看起来是可行的,但是我得到了以下错误。知道我做错什么了吗?

代码语言:javascript
复制
org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: A_setOfB, for columns: [org.hibernate.mapping.Column(setOfB.setOfC)]

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-23 05:29:30

根据他们在7.2.3.基本类型和可嵌入对象的集合的手册,Hibernate是不可能的。

但是不限于基本类型,集合类型可以是任何可嵌入的对象。若要覆盖集合表中可嵌入对象的列,请使用@AttributeOverride注释。

代码语言:javascript
复制
@Entity
public class User {
   [...]
   public String getLastname() { ...}

   @ElementCollection
   @CollectionTable(name="Addresses", joinColumns=@JoinColumn    (name="user_id"))
   @AttributeOverrides({
      @AttributeOverride(name="street1", column=@Column(name="fld_street"))
   })
   public Set<Address> getAddresses() { ... } 
}

@Embeddable
public class Address {
    public String getStreet1() {...}
    [...]
}

这样的可嵌入对象不能包含集合本身.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35565691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档