[英]Hibernate: How to map java.util.Map with java.util.Set as a value with LocalDate inside?
Having an issue with mapping correctly such an object, using annotations:使用注释正确映射 object 时遇到问题:
@Entity
@Table(name = "root_entity")
public RootEntity {
@Id
@GeneratedValue
@Column(name = "id")
private Long id;
// annotations here... DayType extends Enum
private Map<DayType, Set<LocalDate>> days;
}
Wanted result:想要的结果:
root_entity
: root_entity
:
column![]() |
---|
id ![]() |
day_types_id ![]() |
day_types
: day_types
:
column![]() |
---|
id ![]() |
name![]() |
days_list
: days_list
:
column![]() |
---|
id ![]() |
localdate_in_typestamp ![]() |
day_types_to_days_list
: day_types_to_days_list
:
column![]() |
---|
day_type_id ![]() |
day_list_id ![]() |
You need a DayTypeEntity
which would looks something along the lines of the following:您需要一个
DayTypeEntity
,它看起来类似于以下内容:
@Entity
@Table(name = "root_entity")
public RootEntity {
@Id
@GeneratedValue
@Column(name = "id")
private Long id;
@OneToMany
@JoinColumn(name = "day_type_id", referencedColumnName = "day_types_id")
@MapKeyColumn(name = "day_type_id")
@MapKeyEnumerated(ORDINAL)
private Map<DayType, DayTypeEntity> dayTypes;
}
@Entity
@Table(name = "day_types")
public DayTypeEntity {
@Id
@Column(name = "day_type_id")
@Enumerated(ORDINAL)
private DayType id;
private String name;
@ElementCollection;
private Set<LocalDate> days;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.