Я использую данные Spring для подключения к mongodb. Пожалуйста, смотрите мои проблемы ниже:Spring Data & mongodb Ошибка преобразователя
Теперь, я две модели данных (пользователя и проекты):
@Document
public class User implements Serializable {
@Id
private String id;
private String showName;
private String password;
//..... (other attributes)
@DBRef
private List<Draft> createdDraft = new ArrayList<Draft>();
//constructors
public User() {
super();
}
public User(String id, String showName, String password, //....other attributes
List<Draft> createdDraft) {
super();
this.id = id;
this.showName = showName;
this.password = password;
//....
}
//getters and setters
}
и
@Document
public class Draft {
@Id
private String id;
private String title;
private Date createTime;
private Date lastEditTime;
@DBRef
private User lastEditor;
@DBRef
private User mainAuthor;
@DBRef
private List<User> coAuthors = new ArrayList<User>();
private String externalURL;
//constructors..
public Draft() {
super();
}
public Draft(String id, String title, Date createTime, Date lastEditTime,
User lastEditor, User mainAuthor, String externalURL) {
super();
this.id = id;
this.title = title;
this.createTime = createTime;
this.lastEditTime = lastEditTime;
this.lastEditor = lastEditor;
this.mainAuthor = mainAuthor;
this.externalURL = externalURL;
}
//getters and setters...
}
В моем проекте, я создал пользователь успешно затем , Я хотел бы добавить проект существующего пользователя.
public String CreateNewDraft(User mainAuthor)
{
Draft draft = new Draft();
draft.setMainAuthor(mainAuthor);
Date now = new Date(System.currentTimeMillis());
draft.setCreateTime(now);
mainAuthor.getCreatedDraft().add(draft);
//insert the draft --> Successful (1)
mongoOps.insert(draft);
//update the user --> Successful (2)
mongoOps.save(mainAuthor);
//find the last inserted draft. --> Errors.
Draft d = mongoOps.findOne(query(where("createTime").is(now)), Draft.class);
return d.getId()
}
В (1), я нашел новый "проект" документ, созданный в MongoDB, который _ID = имеет 52a1591597d738f7b397be96.
В (2), я обнаружил, что существующий пользователь (mainAuhtor) документ одну запись добавляется в поле createdDraft как [{ "$ реф": "проект", "$ ид": { «$ OID»: "52a1591597d738f7b397be96"}}]
Исключение & журнала:
org.springframework.web.util.NestedServletExceptio н: обработка Обработчик не удалось; вложенным исключением является java.lang.StackOverflowError
org.springframework.web.servlet.DispatcherServlet. doDispatch (DispatcherServlet.java:972) org.springframework.web.servlet.DispatcherServlet. doService (DispatcherServlet.java:852) org.springframework.web.servlet.FrameworkServlet.p rocessRequest (FrameworkServlet.java:882) org.springframework.web.servlet.FrameworkServlet.d oGet (FrameworkServlet.java:778) javax.servlet. http.HttpServlet.service (HttpServlet .java: 621) javax.servlet.http.HttpServlet.service (HttpServlet .java: 728) org.apache.tomcat.websocket.server.WsFilter.doFilt er (WsFilter.java:51)
первопричиной
java.lang.StackOverflowError
java.net.SocketInputStream.socketRead0 (Native Method) java.net.SocketInputStream.read (Unknown Source) java.net.SocketInputStream.read (Unknown Source) java.io.BufferedInputStream.fill (Un известный источник) java.io.BufferedInputStream.read1 (Неизвестный источник) java.io.BufferedInputStream.read (Неизвестный источник) org.bson.io.Bits.readFully (Bits.java:46) org.bson.io.Bits.readFully (Bits.java:33) org.bson.io.Bits.readFully (Bits.java:28) com.mongodb.Response. (Response.java:40) com.mongodb.DBPort.go (DBPort.java:124) com.mongb.DBPort.call (DBPort.java:74) com.mongodb.DBTCPConnector.innerCall (DBTCPConnecto r.java:286) com.mongodb.DBTCPConnector.call (DBTCPConnector.jav a: 257) com.mongodb.DBApiLayer $ MyCollection._ find (DBApiLa yer.java:310) com.mongodb.DBApiLayer $ MyCollection. _find (DBApiLa yer.java:295) com.mongodb.DBCollection.findOne (DBCollection.java: 346) com.mongdb.DBCollection.findOne (DBCollection.java: 331) com.mongodb.DBRefBase.fetch (DBRefBase.java: 53) org.springframework.data.mongodb.core.convert.Mapp ingMongoConverter.readValue (MappingMongoConverter. Java: 1046) org.springframework.data.mongodb.core.convert.Mapp ingMongoConverter.access $ 100 (MappingMongoConverter .java: 77) org .springframework.data.mongodb.core.convert.Mapp ingMongoConverter $ MongoDbPropertyValueProvider.get PropertyValue (MappingMongoConverter.java:999) org.springframework.data.mongodb.core.convert.Mapp ingMongoConverter.getValueInternal (MappingMongoCon verter.java:755) org .springframework.data.mongodb.core.convert.Mapp ingMongoConverter $ 2.doWithAssociation (MappingMongo Converter.java:265) org.springframework.data.mapping.model.BasicPersis tentEntity.doWithAssociations (BasicPersistentEntit y.java:269) org.springframework. data.mongodb.core.convert.Mapp ingMongoConverter.read (MappingMongoConverter.java: 262) org.springframework.data.mongodb.core.convert.Mapp ingMongoConverter.read (MappingMongoConverter.java: 223) org.springframework.data.mongodb.core.convert.Mapp ingMongoConverter .readCollectionOrArray (MappingMon goConverter.java:788) org.springframework.data.mongodb.core.convert.Mapp ingMongoConverter.readValue (MappingMongoConverter. java: 1048) org.springframework.data.mongodb.core.convert.Mapp ingMongoConverter.access $ 100 (MappingMongoConverter .java: 77)?! org.springframework.data.mongodb.core.convert.Mapp ingMongoConverter $ MongoDbPropertyValueProvider.get PropertyValue (MappingMon
Может кто-то помочь мне взглянуть Спасибо так много
я нашел его, что этот сценарий не так, поэтому я загружая ссылки ленивые, как это -> @DBRef (lazy = true) .. поэтому вы не попадете в бесконечный цикл, так что вы также можете опустить преобразователи – Kanuni89