2014-01-30 4 views
0

MongoDB에 문서를 저장하고 싶습니다. @Document을 선언하기 위해 Spring-Data-MongoDB를 사용하고 있습니다. 저에게 문제를 일으키는 한 가지 특별한 문서가 있습니다. 다음은 java.lang.Class 유형의 필드가있는 문제가있는 문서의 예입니다.클래스 형식의 @Document 필드를 가질 수 있습니까?

@Document 
public class Value { 
    @Id 
    private Class<? extends I> clazz; 
    private Integer value; 
    ... 
} 

내가받는 오류는 다음과 같습니다.

Caused by: java.lang.SecurityException: Can not make a java.lang.Class constructor accessible 

나의 현재 솔루션은 String 대신 Class의를 사용하는 것입니다. Class 유형의 필드를 사용하지 않는이 문제를 해결하는 데 도움을 주시면 감사하겠습니다.

답변

0
  1. 왜 이름을 저장하는 것이 아니라 클래스를 저장 하시겠습니까?
  2. 변환을 추가하여 클래스를 저장할 때 클래스로 변환하고 엔터티를로드 할 때 클래스로 다시 변환 할 수 있습니다.
+0

'I'인터페이스를 구현하는 각 클래스마다 다른 값 (런타임 중에 변경할 수 있음)이 있기 때문에. 따라서 구현이 관련 값을 검색 할 수 있도록 값을 유지할 필요가 있습니다. – ChristopherZ

+0

나는 본다. 그건 의미가 있습니다. 그러면 그 클래스 이름을 저장하기 만하면됩니다. 클래스를 저장한다고해서 실제로 버그가 발생하는 것은 아닙니다. – evanchooly

+0

동의합니다. 그것이 실제로 저장되는 방법은 중요하지 않습니다. 코딩의 관점에서 볼 때,'Class'를 사용하는 것이 더 간단합니다. (예 :지도 조회는'map.put (clazz.getName(), value) '대신'map.put (clazz, value)'일 수 있습니다. 변환기 방법을 시도해 보겠습니다. 아마도 투명하게 작동 할 것입니다. – ChristopherZ

관련 문제