0

我正在使用BeanListHandler将数据库中的行转换为 POJO。它一直运行良好,但现在我需要进行一些日期比较。为此,我决定使用 JodaTime。

我希望查询结果集中的所有 Timestamp/Date 类型行都转换为 JodaTime 的DateTime类,而不是默认的Timestamp. 我尝试使用 setter 来执行此操作,但BeanListHandler似乎没有调用 setter 来设置值(它是否使用反射?)。

我该怎么做呢?

4

1 回答 1

0

我认为没有直接的解决方案。一种解决方法是在 POJO中同时包含Timestamp和字段,并在属性的 setter 方法中设置值,如下例所示。DateTimeDateTimeTimestamp

public class Pojo{
    private Timestamp timestamp;
    private DateTime dateTime;

    public Timestamp getTimestamp() {
        if (timestamp == null && dateTime != null) {
            this.timestamp = new Timestamp(dateTime.getMillis());
        }
        return timestamp;
    }

    public void setTimestamp(Timestamp timestamp) {
        if (dateTime == null && timestamp != null) {
            this.dateTime = new DateTime(timestamp.getTime());
        }
        this.timestamp = timestamp;
    }

    public DateTime getDateTime() {
        if (dateTime == null && timestamp != null) {
            this.dateTime = new DateTime(timestamp.getTime());
        }
        return dateTime;
    }

    public void setDateTime(DateTime dateTime) {
        if (timestamp == null && dateTime != null) {
            this.timestamp = new Timestamp(dateTime.getMillis());
        }
        this.dateTime = dateTime;
    }



}
于 2017-12-27T06:16:53.630 回答