2016-07-22 4 views
0

LocalDateTime 필드가있는 엔터티를 데이터 저장소에 저장할 수 있습니다. 그러나 LocalDateTime 필드가있는 엔터티에 대한 쿼리를 시도하고 있습니다. 내가 쿼리를 작성하고 asList 메서드를 호출 할 때를 제외하고는 아래에 발생합니다 : java.time.LocalDateTime 클래스와 MongoDB를에서 자바 객체에 매핑 개체가 없을 때MongoDB의 LocalDateTime 필드가있는 엔터티에 대한 쿼리를 만들 수 없습니다.

java.lang.RuntimeException: org.mongodb.morphia.mapping.MappingException: No usable constructor for java.time.LocalDateTime 

답변

0

모르핀은 기본 생성자에 의존 하나는 예외를 던집니다.

다음과 같이 데이터를 변환 @PreLoad 라이프 사이클 주석을 사용할 수 있습니다 : 현재 없다

@Entity 
public class MyEntity { 
    public MyEntity() { 

    } 

    @Id 
    private ObjectId id; 
    private LocalDateTime localDateTime; 

    @PreLoad 
    public void preLoad(DBObject obj) { 
     BasicDBObject object = (BasicDBObject) obj.get("localDateTime"); 
     BasicDBObject date = (BasicDBObject) object.get("date"); 
     BasicDBObject time = (BasicDBObject) object.get("time"); 
     localDateTime = LocalDateTime.of(date.getInt("year"), 
             date.getInt("month"), 
             date.getInt("day"), 
             time.getInt("hour"), 
             time.getInt("minute"), 
             time.getInt("second"), 
             time.getInt("nano")); 
     obj.removeField("localDateTime"); 
    } 
} 
0

모르핀 자바 8 날짜/시간 형식을 지원합니다. 현재 1.3 버전에서이 지원을 추가 할 코드 검토에 새로운 모듈이 있습니다.

관련 문제