2014-02-12 3 views
3

Наша архитектура сочетает Spring с MongoDB. Обычно у нас нет проблем с сохранением/редактированием и чтением пользовательских объектов. В последнее время мы пробежали несколько модификаций, в которых мы начали получать следующие ошибкиMongoDB - Spring - Сохранение объекта вызывает StackOverflowError

 java.lang.StackOverflowError 
at java.util.Collections.emptyList(Collections.java:2959) 
at org.springframework.data.util.TypeDiscoverer.getTypeArguments(TypeDiscoverer.java:442) 
at org.springframework.data.util.ClassTypeInformation.getTypeArguments(ClassTypeInformation.java:40) 
at org.springframework.data.util.TypeDiscoverer.getActualType(TypeDiscoverer.java:288) 
at org.springframework.data.util.ClassTypeInformation.getActualType(ClassTypeInformation.java:40) 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.addCustomTypeKeyIfNecessary(MappingMongoConverter.java:650) 

Или

 java.lang.StackOverflowError 
at sun.misc.Unsafe.getObject(Native Method) 
at sun.misc.Unsafe.getObject(Unsafe.java:231) 
at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:19) 
at java.lang.reflect.Field.get(Field.java:358) 
at org.springframework.util.ReflectionUtils.getField(ReflectionUtils.java:118) 
at org.springframework.data.mapping.model.BeanWrapper.getProperty(BeanWrapper.java:133) 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$3.doWithPersistentProperty(MappingMongoConverter.java:382) 

Перед тем, как я добавляю все основные классы, которые сочетает в себе нашу архитектуру Интересно, будет ли любой из вас ранее сталкивались с этими исключениями?

ответ

3

Видимо, я не могу добавить журнал для моих объектов данных,

, когда я снял регистратор он начал работать снова

protected final Log logger = LogFactory.getLog(getClass()); 

Будьте осторожны при использовании регистраторов в вашем объекте данных в MongoDB

Похоже, что использование @Transient должно сигнализировать драйвер MongoDB не сохранять переменную регистратора

http://docs.spring.io/spring-data/data-document/docs/current/reference/html/#mapping-usage-annotations

+0

woah, рад, что вы поняли это. Помогает ли объявление регистрировать как личное? –

+4

отметьте его как статическим (предпочтительным), так и временным (потому что, почему бы и нет?), И все должно быть в порядке. Вам действительно не нужен логгер для каждого экземпляра. – evanchooly

+0

Я должен проверить, мы используем драйвер MongoDB, который все еще не очень зрелый, я был потрясен, когда понял, что он пытался сохранить конечную переменную регистратора. Я где-то читал, что, если я использую переходный процесс, все будет хорошо, мне нужно будет это проверить. – Uri

Смежные вопросы