gpt4 book ai didi

java - 使用 Eclipse Link 在 JPA 中映射 Joda Time "Period"的注释

转载 作者:可可西里 更新时间:2023-11-01 07:06:25 24 4
gpt4 key购买 nike

我的 Item 实体中有一个字段 - expiryLimit 我想为其使用 joda-time Period 这将是一个适合在这里使用的类型。

只是为了解释 - expiryLimit 或之后的任何持续时间一个特定的 item 将过期,使用它我可以计算一个 Item 给定 deliveryDate 的确切 expiryDate

现在我面临的问题是找到一种适当的方法将此类型映射到 JPA

是否有任何可用的 API第 3 方库 提供一些注释来做到这一点?我还使用 Eclipse Link @Converter 注释将 DateTimeMySQL TimeStamp 。那么,我是否也需要对 Period 做同样的事情。如果是,那么我应该将其转换为哪种类型。到 varchar?或 Long?或其他一些适合表示 Period 的类型。

最佳答案

好的,最后我只使用 EclipseLink @Converter 解决了这个问题。我就是这样做的。我也欢迎任何关于这种方式的评论:-

ItemMaster 实体:-

public class ItemMaster {
@Converter(
name="periodConverter",
converterClass = com.joda.converter.PeriodConverter.class
)
@Convert("periodConverter")
@Column(name = "expiry_limit", length = 2000)
private Period expiryLimit;

/** Constructors **/


public Period getExpiryLimit() {
return expiryLimit;
}

public void setExpiryLimit(Period expiryLimit) {
this.expiryLimit = expiryLimit;
}
}

PeriodConverter.class: -

public class PeriodConverter implements Converter {

private Logger log;
private static final long serialVersionUID = 1L;

@Override
public Object convertDataValueToObjectValue(Object str, Session session) {
if (str == null) {
log.info("convertDataValueToObjectValue returning null");
return null;
}
return new Period(str);

}

@Override
public Object convertObjectValueToDataValue(Object period, Session session) {
/** str format should be: - `PyYmMwWdDThHmMsS` **/
if (period == null) {
log.info("convertObjectValueToDataValue returning null");
return null;
}
return period.toString();
}

@Override
public void initialize(DatabaseMapping mapping, Session session) {
log = Logger.getLogger("com.joda.converter.PeriodConverter");
((AbstractDirectMapping) mapping).setFieldType(java.sql.Types.VARCHAR);
}

@Override
public boolean isMutable() {
return true;
}
}

关于java - 使用 Eclipse Link 在 JPA 中映射 Joda Time "Period"的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14208624/

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