【问题标题】:How can I map Set<Date> dates without creating a new table?如何在不创建新表的情况下映射 Set<Date> 日期?
【发布时间】:2020-08-18 03:15:16
【问题描述】:
@Entity(name = "my_entity_name")
public class MyEntityName {

    /* some normal fields */

    private Set<Date> dates = new HashSet<>();

    /* Getters and setters for all fields */
}

我想将此日期集合保存为同一实体中的单个列(因为 json 对我来说可以)。 JPA中有没有解决方案?请帮助我...提前谢谢。

【问题讨论】:

    标签: java hibernate spring-boot jpa


    【解决方案1】:

    我通过在我的实体类的集合类型字段上使用@Converter(converter = MyCustomTypeConverter.class) 得到了解决方案。

    示例转换器如下所示

    public class MyCustomTypeConverter implements AttributeConverter<Set<Date>, String> {
    
        private ObjectMapper mapper = new ObjectMapper();
    
        @Override
        public String convertToDatabaseColumn(Set<Date> attribute) {
    
            //code to convert from collection field to string
        }
    
        @Override
        public Set<Date> convertToEntityAttribute(String dbData) {
    
            //code to convert from db-string field to collection field.
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可能应该为此目的使用字符串字段。 集合主要用于映射@ManyToMany 或@OneToMany

      【讨论】:

      • 您的意思是 Set 还是 Set 应该被 String 字段替换?
      • 我建议使用私有字符串日期。但总的来说,它看起来有点奇怪。可能如果您为任务添加一些上下文,即您有什么样的课程以及为什么需要一组日期,可能我的答案不正确。
      猜你喜欢
      • 2020-02-24
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      相关资源
      最近更新 更多