我是hibernate的新手,我已经学会了如何注释Map<String, String>
或Map<String, CustomObject>
或List<CustomObject>
等。但是我找不到注释Map<String, List>
或{的方法{1}}
E.g。以下是我如何注释List<List>
并且它正在工作。
Map<CustomKey, CustomObject>
和
@ElementCollection(targetClass=PhoneNumber.class, fetch=FetchType.EAGER)
@MapKeyClass(NumberType.class)
@MapKeyColumn(name="type")
@CollectionTable(name="phones", joinColumns=@JoinColumn(referencedColumnName="id"))
@Getter
@Setter
private Map<NumberType, PhoneNumber> phones;
和
@Embeddable
public class NumberType {
}
现在,我的要求是宣传@Embeddable
public class PhoneNumber {
}
和Map<CustomKey, List<CustomObject>>
所以我的问题: Hibernate / JPA可以做到吗?或者你在休眠方面有不同的目的吗?
非常感谢您的帮助。
答案 0 :(得分:2)
一般来说,
Map表示多对多关系,因此可以通过@ManyToMany
注释进行映射。
List是一对多或多对一关系,因此相应地应该是@OneToMany
或@ManyToOne
注释。
Hibernate处理它们之间的实体和关系。
因此,示例中的Map
值类型(Map/List
)应由其自己的实体表示。例如。 List<CustomObject>
将是CustomObjectGroup
。