gpt4 book ai didi

java - 如何将 joda 时间的 YearMonth 类型的属性保存到一列中?

转载 作者:太空宇宙 更新时间:2023-11-04 07:42:03 25 4
gpt4 key购买 nike

我想保留 joda-time 类型 YearMonth,但找不到任何可用的持久类型(请参阅 here )将其存储到一列中?

是否有任何 Hibernate 类型可以直接用于此目的?

非常感谢。

最佳答案

由于我在网络上找不到任何解决方案,我们实现了自己的自定义 hibernate 类型,使用表示数据库中 YearMonth 的 Integer 类型

步骤如下:

1- 创建持久类PercientYearMonth

public class PersistentYearMonth extends AbstractSingleColumnUserType<YearMonth, Integer, IntegerColumnYearMonthMapper> {
private static final long serialVersionUID = -4204097887942539571L;
}

2- 创建映射器IntegerColumnYearMonthMapper

public class IntegerColumnYearMonthMapper extends AbstractIntegerColumnMapper<YearMonth> {

private static final long serialVersionUID = -9060971007814071116L;

@Override
public YearMonth fromNonNullString(String s) {
return YearMonth.parse(s, DateTimeFormat.forPattern("yyyyMM"));
}

@Override
public YearMonth fromNonNullValue(Integer value) {
return fromNonNullString(value.toString());
}

@Override
public String toNonNullString(YearMonth value) {

return value.toString( DateTimeFormat.forPattern("yyyyMM"));
}

@Override
public Integer toNonNullValue(YearMonth value) {
return Integer.valueOf(toNonNullString(value));
}
}

3- 如果您使用 XML hibernate 映射,请在需要时将自定义类型注册到 hbm.xml 文件中

    <property name="monthOfYear" type="org.jadira.usertype.dateandtime.joda.PersistentYearMonth" />

或者如果您使用注释,请将其注册为:

@Type(type="org.jadira.usertype.dateandtime.joda.PersistentYearMonth")

关于java - 如何将 joda 时间的 YearMonth 类型的属性保存到一列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15904618/

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