我有以下情况:
@Entity
class A {
@ElementCollection
private Set<B> setOfB;
}
@Embeddable
class B{
@OneToMany
private Set<C> setOfC;
}
@Entity
class C{
private String name;
}下面的这个问题看起来是可行的,但是我得到了以下错误。知道我做错什么了吗?
org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: A_setOfB, for columns: [org.hibernate.mapping.Column(setOfB.setOfC)]谢谢。
发布于 2016-02-23 05:29:30
根据他们在7.2.3.基本类型和可嵌入对象的集合的手册,Hibernate是不可能的。
但是不限于基本类型,集合类型可以是任何可嵌入的对象。若要覆盖集合表中可嵌入对象的列,请使用@AttributeOverride注释。
@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() {...}
[...]
}这样的可嵌入对象不能包含集合本身.
https://stackoverflow.com/questions/35565691
复制相似问题