Skip to content

Commit 2718be7

Browse files
pavel-luhinakonczak
authored andcommitted
DATAES-260 - StacOverflow when two reverse relationship.
Ignore fields based on parent ignore list
1 parent c7dfd21 commit 2718be7

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/main/java/org/springframework/data/elasticsearch/core/MappingBuilder.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.springframework.core.io.ClassPathResource;
3333
import org.springframework.data.annotation.Transient;
3434
import org.springframework.data.elasticsearch.annotations.*;
35+
import org.springframework.data.elasticsearch.annotations.Field;
3536
import org.springframework.data.elasticsearch.core.completion.Completion;
3637
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
3738
import org.springframework.data.mapping.model.SimpleTypeHolder;
@@ -45,6 +46,7 @@
4546
* @author Kevin Leturc
4647
* @author Alexander Volz
4748
* @author Dennis Maaß
49+
* @author Pavel Luhin
4850
*/
4951

5052
class MappingBuilder {
@@ -108,7 +110,7 @@ private static void mapEntity(XContentBuilder xContentBuilder, Class clazz, bool
108110

109111
for (java.lang.reflect.Field field : fields) {
110112

111-
if (field.isAnnotationPresent(Transient.class) || isInIgnoreFields(field)) {
113+
if (field.isAnnotationPresent(Transient.class) || isInIgnoreFields(field, fieldAnnotation)) {
112114
continue;
113115
}
114116

@@ -336,10 +338,9 @@ private static boolean isIdField(java.lang.reflect.Field field, String idFieldNa
336338
return idFieldName.equals(field.getName());
337339
}
338340

339-
private static boolean isInIgnoreFields(java.lang.reflect.Field field) {
340-
Field fieldAnnotation = field.getAnnotation(Field.class);
341-
if (null != fieldAnnotation) {
342-
String[] ignoreFields = fieldAnnotation.ignoreFields();
341+
private static boolean isInIgnoreFields(java.lang.reflect.Field field, Field parentFieldAnnotation) {
342+
if (null != parentFieldAnnotation) {
343+
String[] ignoreFields = parentFieldAnnotation.ignoreFields();
343344
return Arrays.asList(ignoreFields).contains(field.getName());
344345
}
345346
return false;

0 commit comments

Comments
 (0)