Hibernate:如何将 java.util.Map 与 java.util.Set 映射为带有 LocalDate 的值?
Posted
技术标签:
【中文标题】Hibernate:如何将 java.util.Map 与 java.util.Set 映射为带有 LocalDate 的值?【英文标题】:Hibernate: How to map java.util.Map with java.util.Set as a value with LocalDate inside? 【发布时间】:2021-06-14 14:47:20 【问题描述】:使用注释正确映射此类对象时遇到问题:
@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;
想要的结果:
root_entity
:
column |
---|
id |
day_types_id |
day_types
:
column |
---|
id |
name |
days_list
:
column |
---|
id |
localdate_in_typestamp |
day_types_to_days_list
:
column |
---|
day_type_id |
day_list_id |
【问题讨论】:
【参考方案1】:您需要一个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;
【讨论】:
是的,有同样的想法,但认为这对这个案例来说还不够出色......以上是关于Hibernate:如何将 java.util.Map 与 java.util.Set 映射为带有 LocalDate 的值?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jackson 将 JSON 字符串转换为漂亮的打印 JSON 输出
GWT - Hibernate:如何将 MySQL 的结果显示到 GWT 客户端
如何将 LocalDate 作为 Date 类型持久保存到 Hibernate
如何使用spring + hibernate将数据插入数据库?