2017-12-20 26 views
0

BeanListHandler을 사용하여 데이터베이스의 행을 POJO로 변환하고 있습니다. 그것은 잘 작동하지만 지금은 몇 가지 날짜 비교를 할 필요가있다. 이를 위해 JodaTime을 사용하기로 결정했습니다.Java - DBUtils BeanListHandler를 사용하여 쿼리의 모든 날짜를 JodaTime의 DateTime으로 변환하십시오.

내 쿼리 결과 집합의 모든 Timestamp/Date 유형 행을 기본 Timestamp 대신 JodaTime의 DateTime 클래스로 변환하려고합니다. setter를 사용하여이 작업을 시도했지만 BeanListHandler은 setter를 호출하여 값을 설정하지 않는 것 같습니다 (리플렉션을 사용합니까?).

어떻게해야합니까?

+0

외부 라이브러리를 프로젝트에 도입하는 경우 왜 [ThreeTen Backport] (http://www.threeten.org/threetenbp/)가 필요합니까? 이것에 의해, 최신의 Java 일자 및 시각 API 인'java.time'가 제공됩니다. Joda-Time 홈페이지의 인용문 : "사용자는 이제'java.time' (JSR-310)으로 마이그레이션하라는 요청을받습니다."Joda-Time은 크게 "완료된"프로젝트로 간주됩니다. 주요 개선 사항은 계획되지 않았습니다. Java SE 8을 사용하는 경우,'java.time' (JSR-310)로 마이그레이션하십시오. "Java 6 또는 7을 사용하는 경우에도 지금 바로 그 단계를 수행 할 수 있습니다. –

답변

0

나는 직선적 인 해결책이 없다고 생각합니다. 한 가지 해결 방법은 TimestampDateTime 필드를 POJO에두고 다음 예제와 같이 Timestamp 속성의 setter 메소드에서 DateTime 값을 설정하는 것입니다.

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; 
    } 



}