简体   繁体   English

Hibernate: How to map java.util.Map with java.util.Set as a value with LocalDate inside?

[英]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 ID
day_types_id day_types_id

day_types : day_types

column柱子
id ID
name姓名

days_list : days_list

column柱子
id ID
localdate_in_typestamp localdate_in_typestamp

day_types_to_days_list : day_types_to_days_list

column柱子
day_type_id day_type_id
day_list_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM