MarshallingException: невозможно отменить сортировку результатов. Ссылка

Я использую игру 2.4 и хотел бы установить ссылочный объект «документ» в модели «пользователь». Если я перебираю итератор, я получаю следующую ошибку: Итак, если я вызываю маршрут /users, где обычно я должен получить список Json со всеми пользовательскими объектами и встроенными документами.

[MarshallingException: Невозможно отменить преобразование результата в модели класса. Sample.pdf"} , { "имя" : "Test.pdf"}]}]

Модельный пользователь

package models;


import com.fasterxml.jackson.annotation.JsonProperty;
import org.jongo.MongoCollection;
import org.bson.types.ObjectId;
import uk.co.panaxiom.playjongo.PlayJongo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Created by abuder on 28.09.15.
 */
public class User {

    public static MongoCollection users() {
        return PlayJongo.getCollection("users");
    }

    @JsonProperty("_id")
    private ObjectId id;
    private String name;
    private List<Document> documents = new ArrayList<Document>();

    public User save() {
        users().save(this);
        return this;
    }

    public ObjectId getId() {
        return id;
    }

    public void setId(ObjectId id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Document> getDocuments() {
        return documents;
    }

    public void setDocuments(List<Document> documents) {
        this.documents = documents;
    }

    public void remove() {
        users().remove(this.id);
    }

    public static User findByName(String name) {
        return users().findOne("{name: #}", name).as(User.class);
    }

    public static List<User> findAll(){
        List<User> userList = new ArrayList<User>();
        Iterator<User> iterator = users().find().as(User.class).iterator();
        while (iterator.hasNext()){
            userList.add(iterator.next());
        }
        return userList;
    }

}

Образец документа

package models;

/**
 * Created by abuder on 28.09.15.
 */
public class Document {


    private String name;
    public Document(String name){
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

Контроллер

package controllers;

import models.Document;
import models.User;
import play.*;
import play.libs.Json;
import play.mvc.*;

import views.html.*;

import java.util.List;

public class Application extends Controller {

    public Result index() {

        Document doc1 = new Document("Sample.pdf");
        Document doc2 = new Document("Test.pdf");

        User user = new User();
        user.setName("Alexander Buder");
        user.getDocuments().add(doc1);
        user.getDocuments().add(doc2);
        user.save();

        return ok(Json.toJson(user));
    }


    public Result usersJson(){
       List<User> userList = User.findAll();
        return ok(Json.toJson(userList));
    }

}

Маршруты

GET        /                    controllers.Application.index()

GET        /users               controllers.Application.usersJson()

person abuder    schedule 28.09.2015    source источник


Ответы (1)


Я нашел проблему. Я забыл реализовать конструктор по умолчанию в моделях стендов, после реализации программа работает нормально.

person abuder    schedule 29.09.2015