2013-11-21 13 views
1

我想從這個集合中的所有成績查詢整個集合,並將它們要打印的第一個:在jongo

MongoCollection musics = JNDIManager.getJongoCollection("musics"); 
Iterable<MusicObject> all = musics.find().as(MusicObject.class); 

其中MusicObject類:

public class MusicObject { 
    @Id 
    private final String _id; // refers to directory 
    private String name; 
    private String directory; 

    MusicObject() {}; 
} 

和db.musics .find()導致

{"_id": ObjectId("..."), "name": " Certain Name", "directory" : "C:\\..."} 
{"_id": ObjectId("..."), "name": " Certain Name 2", "directory" : "C:\\..."} 
{"_id": ObjectId("..."), "name": " Certain Name 3", "directory" : "C:\\..."} 

與全異常堆棧跟蹤

org.jongo.marshall.MarshallingException: Unable to unmarshall result to class br.com.evans.dao.musics.MusicObject from content {"_id": ObjectId("..."), "name": " Certain Name", "directory" : "C:\\..."} 
at org.jongo.marshall.jackson.JacksonEngine.unmarshall(JacksonEngine.java:45) 
at org.jongo.ResultHandlerFactory$ResultUnmarshallingHandler.map(ResultHandlerFactory.java:43) 
at org.jongo.MongoIterator.next(MongoIterator.java:44) 
at br.com.evans.jdni.music.MusicPlayer.setMusicListFromDB(MusicPlayer.java:52) 
at br.com.evans.command.repository.CommandRepository.proccesNode(CommandRepository.java:47) 
at br.com.evans.behavior.nodes.core.MusicBehavior.execute(MusicBehavior.java:40) 
at br.com.evans.servlets.behavior.BehaviorExecution.doPost(BehaviorExecution.java:51) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at br.com.evans.servlet.filters.SessionFilter.doFilter(SessionFilter.java:55) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:722) 
Caused by: java.io.CharConversionException: Invalid UTF-32 character 0x64695f07(above 10ffff) at char #1, byte #7) 
at com.fasterxml.jackson.core.io.UTF32Reader.reportInvalid(UTF32Reader.java:155) 
at com.fasterxml.jackson.core.io.UTF32Reader.read(UTF32Reader.java:109) 
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.loadMore(ReaderBasedJsonParser.java:122) 
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._skipWSOrEnd(ReaderBasedJsonParser.java:1651) 
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:552) 
at com.fasterxml.jackson.databind.ObjectReader._initForReading(ObjectReader.java:1293) 
at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1199) 
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:862) 
at org.jongo.marshall.jackson.JacksonEngine.unmarshall(JacksonEngine.java:42) 
... 27 more 

如何解決這個問題?我搜索了jongo文檔,我可以理解我映射了我的MusicObject錯誤,只是不知道該怎麼做。試過@Id,long,String,@ObjectId

編輯:此外,刪除了目錄列中的唯一索引。

+0

您的代碼似乎沒問題。你可以給你正在使用的Jongo版本和圍繞'find()'調用的代碼嗎? –

+0

你能複製/粘貼完整的stacktrace嗎? –

+0

我試圖將它變成一個麻煩,所以我手動完成了。也許它完全過時了? Ver 0.4 Jongo。 – gabrieltnishimura

回答

1

我還沒有轉載您所描述的行爲,但是這可能與發行https://github.com/bguerout/jongo/issues/136

你能與早期版本測試。 此版本必須考慮爲未來1.0版本的SNAPSHOT

<dependencies> 
    <dependency> 
    <groupId>org.jongo</groupId> 
    <artifactId>jongo</artifactId> 
    <version>1.0-early-20131120-1751</version> 
    </dependency> 
</dependencies> 
... 
<repositories> 
    <repository> 
     <id>cloudbees-jongo-early-release</id> 
     <url>http://repository-jongo.forge.cloudbees.com/release</url> 
     <releases> 
      <enabled>true</enabled> 
     </releases> 
     <snapshots> 
      <enabled>false</enabled> 
     </snapshots> 
    </repository> 
</repositories> 
相關問題