gpt4 book ai didi

java - Spring Boot 中从 org.joda.time.Interval 迁移

转载 作者:行者123 更新时间:2023-12-01 18:20:42 25 4
gpt4 key购买 nike

我曾经应用org.joda.time.Interval来表示具有固定开始和结束时间的时间间隔(不同于与特定时间无关的持续时间),以通过REST和存储进行交换Spring Boot 服务器应用程序中的能源计划 (2.2.2.RELEASE)。

我尝试了不同的方法通过 JPA/Hibernate 存储对象的 org.joda.time.Interval 字段:

  • jadira (7.0.0.CR1) 在字段定义上方带有注释 (@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentInterval"))
  • jadira (7.0.0.CR1),设置属性 spring.jpa.properties.jadira.usertype.autoRegisterUserTypes=true

但是,我总是得到

@OneToOne or @ManyToOne on de.iwes.enavi.cim.schedule51.Schedule_MarketDocument.matching_Time_Period_timeInterval references an unknown entity: org.joda.time.Interval

问题:

  1. 有没有办法让 hibernate 与 org.joda.time.Interval 一起工作?
  2. 由于 java.time 没有类似的间隔类,从 org.joda.time.Interval 迁移的首选解决方案是什么?

最佳答案

我最终编写了一个自定义类:

@Entity
public class FInterval {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;

@Column
private long startMillis;

@Column
private long endMillis;

public FInterval() {
}

public long getStartMillis() {
return startMillis;
}

public void setStartMillis(long start) {
this.startMillis = start;
}

public long getEndMillis() {
return endMillis;
}

public void setEndMillis(long end) {
this.endMillis = end;
}

public FInterval(Interval entity) {
this.startMillis = entity.getStartMillis();
this.endMillis = entity.getEndMillis();
}

public Interval getInterval() {
return new Interval(this.startMillis,this.endMillis);
}
}

和属性转换器:

@Converter(autoApply = true)
public class IntervalAttributeConverter implements AttributeConverter<Interval, FInterval> {

@Override
public FInterval convertToDatabaseColumn(Interval attribute) {
return new FInterval(attribute);
}

@Override
public Interval convertToEntityAttribute(FInterval dbData) {
return dbData.getInterval();
}
}

关于java - Spring Boot 中从 org.joda.time.Interval 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60296211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com