0
나는 Spring Data Elastic을 사용하여 Elasticsearch 데이터에 액세스하는 Spring 응용 프로그램이 있습니다.Spring 데이터 탄성 및 재귀 적 문서 매핑
데이터 모델에 재귀가 필요하며 내 응용 프로그램을 실행하려고 할 때 java.lang.StackOverflowError : null이 발생하므로 Spring Data Elastic에 대한 두통이 발생합니다. 내 수업이 어떻게 보이는지
이입니다
@Document(indexName = "conversation", type = "folder-tree")
public class MailFolderTreeSearchEntity extends DeletableEntity {
@Id
@Field(index = not_analyzed)
private String id;
@Field(type = FieldType.String, index = not_analyzed)
private String owner;
@Field(type = FieldType.Nested)
private List<MailFolder> folderList;
...
중첩 된 클래스 :
public class MailFolder {
@Field(type = FieldType.String, index = not_analyzed)
private String id;
@Field(type = FieldType.String, index = not_analyzed)
private String name;
@Field(type = FieldType.String, index = not_analyzed)
private String icon;
@Field(type = FieldType.Nested)
private List<MailFolder> children;
...
이이 코드를 실행하려고 내가 얻을 예외입니다 :
Caused by: java.lang.StackOverflowError: null
at sun.reflect.generics.parser.SignatureParser.parseClassTypeSignature(SignatureParser.java:310) ~[na:1.8.0_91]
at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:289) ~[na:1.8.0_91]
at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:283) ~[na:1.8.0_91]
at sun.reflect.generics.parser.SignatureParser.parseTypeArgument(SignatureParser.java:436) ~[na:1.8.0_91]
at sun.reflect.generics.parser.SignatureParser.parseTypeArguments(SignatureParser.java:396) ~[na:1.8.0_91]
at sun.reflect.generics.parser.SignatureParser.parsePackageNameAndSimpleClassTypeSignature(SignatureParser.java:346) ~[na:1.8.0_91]
at sun.reflect.generics.parser.SignatureParser.parseClassTypeSignature(SignatureParser.java:310) ~[na:1.8.0_91]
at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:289) ~[na:1.8.0_91]
at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:283) ~[na:1.8.0_91]
at sun.reflect.generics.parser.SignatureParser.parseTypeSignature(SignatureParser.java:485) ~[na:1.8.0_91]
at sun.reflect.generics.parser.SignatureParser.parseTypeSig(SignatureParser.java:188) ~[na:1.8.0_91]
at sun.reflect.generics.repository.FieldRepository.parse(FieldRepository.java:52) ~[na:1.8.0_91]
at sun.reflect.generics.repository.FieldRepository.parse(FieldRepository.java:42) ~[na:1.8.0_91]
at sun.reflect.generics.repository.AbstractRepository.<init>(AbstractRepository.java:74) ~[na:1.8.0_91]
at sun.reflect.generics.repository.FieldRepository.<init>(FieldRepository.java:48) ~[na:1.8.0_91]
at sun.reflect.generics.repository.FieldRepository.make(FieldRepository.java:66) ~[na:1.8.0_91]
at java.lang.reflect.Field.getGenericInfo(Field.java:105) ~[na:1.8.0_91]
at java.lang.reflect.Field.getGenericType(Field.java:247) ~[na:1.8.0_91]
at org.springframework.core.SerializableTypeWrapper$FieldTypeProvider.getType(SerializableTypeWrapper.java:285) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.core.SerializableTypeWrapper.forTypeProvider(SerializableTypeWrapper.java:150) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.core.ResolvableType.forType(ResolvableType.java:1333) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.core.ResolvableType.forField(ResolvableType.java:1053) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.core.GenericCollectionTypeResolver.getCollectionFieldType(GenericCollectionTypeResolver.java:79) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.data.elasticsearch.core.MappingBuilder.getFieldType(MappingBuilder.java:321) ~[spring-data-elasticsearch-2.1.3.RELEASE.jar:na]
at org.springframework.data.elasticsearch.core.MappingBuilder.isEntity(MappingBuilder.java:312) ~[spring-data-elasticsearch-2.1.3.RELEASE.jar:na]
at org.springframework.data.elasticsearch.core.MappingBuilder.mapEntity(MappingBuilder.java:132) ~[spring-data-elasticsearch-2.1.3.RELEASE.jar:na]
at org.springframework.data.elasticsearch.core.MappingBuilder.mapEntity(MappingBuilder.java:137) ~[spring-data-elasticsearch-2.1.3.RELEASE.jar:na]
at org.springframework.data.elasticsearch.core.MappingBuilder.mapEntity(MappingBuilder.java:137) ~[spring-data-elasticsearch-2.1.3.RELEASE.jar:na]
at org.springframework.data.elasticsearch.core.MappingBuilder.mapEntity(MappingBuilder.java:137) ~[spring-data-elasticsearch-2.1.3.RELEASE.jar:na]
at org.springframework.data.elasticsearch.core.MappingBuilder.mapEntity(MappingBuilder.java:137) ~[spring-data-elasticsearch-2.1.3.RELEASE.jar:na]
을
아이디어가 있으십니까?
:
이 내 메일 폴더 클래스가 순간에 모습입니다 그. – khachik
어쩌면 잘못된 용어를 사용하고 있었을 지 모르겠지만 작업이 명확하기를 바란다 : 동일한 유형의 문서를 저장할 수있는 문서를 저장하고 싶다. 그게 가능합니까, 그렇지 않은가요? – SaWo
자바 수준의 재귀를 사용할 수 없다는 점을 제외하고는 해당 매핑을 정의 할 수 있습니다. 정의를 복사하여 복사하여 유한 매핑이 필요합니다. 또는 동적 매핑으로 전환하면 스프링 데이터가이를 지원하는지 모르겠습니다. – khachik