Spring data solr извлекает документы с странным поведением дочерних документов - PullRequest
0 голосов
/ 30 января 2019

У меня есть следующий проект mvc spring, который используется для выполнения операции CRUD над документами solr, я смог успешно создавать, читать, обновлять и удалять, но когда я добавил некоторые дочерние документы, все стало немного грязно, например, когдаЯ сохраняю новый документ в формате json, он сохраняется, но когда я запрашиваю его, дочерние документы возвращаются отдельно, и в основном документе он говорит, что он нулевой.

Вот что я пытаюсь сделать:

Основной документ:

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@SolrDocument(collection = "movie")
public class Movie {

    @Id
    private long id;
    @Indexed
    private String title;
    @Indexed
    private List<Long> genreId;
    @Indexed
    private List<Genre> genre;
    @Indexed(required = true, stored = true)
    @ChildDocument
    private List<Person> director;
    @Indexed
    private Date releaseDate;
    @Indexed(required = true, stored = true)
    @ChildDocument
    private List<Person> distributor;
    @Indexed
    private MovieLanguage language;
    @Indexed(required = true, stored = true)
    @ChildDocument
    private List<Person> actor;
    @Indexed(required = true, stored = true)
    @ChildDocument
    private List<Person> creator;
    @Indexed
    private long duration;

}

Дочерний документ:

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Person implements Serializable {

    @Id
    private int id;
    @Indexed
    private String firstName;
    @Indexed
    private String lastName;
    @Indexed
    @ChildDocument
    private List<Role> role;
}

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Role implements Serializable {

    @Id
    private int id;
    @Indexed
    private String name;

}

И остальные весенние классы (репозиторий, сервис и контроль) без каких-либо деловых операций, кроме по умолчанию.

вот мой запрос:

{
    "id": 1,
    "title": "movie",
    "genreId": [
        1,
        3,
        4
    ],
    "genre": [
        "Comedy",
        "Drama"
    ],
    "director": [
        {
            "id": 9,
            "firstName": "aaa",
            "lastName": "aaddd",
            "role": [
                {
                    "id": 2,
                    "name": "director"
                }
            ]
        }
    ],
    "releaseDate": "2006-11-30T00:00:00.000+0000",
    "distributor": [
        {
            "id": 3,
            "firstName": "aaa",
            "lastName": "aaddd",
            "role": [
                {
                    "id": 4,
                    "name": "DISTRIBUTOR"
                }
            ]
        }
    ],
    "language": "Arabic",
    "actor": [
        {
            "id": 5,
            "firstName": "aaa",
            "lastName": "aaddd",
            "role": [
                {
                    "id": 6,
                    "name": "Actor"
                }
            ]
        }
    ],
    "creator": [
        {
            "id": 7,
            "firstName": "aaa",
            "lastName": "aaddd",
            "role": [
                {
                    "id": 8,
                    "name": "Creator"
                }
            ]
        }
    ],
    "duration": 1200
}

А вот ответ всех сотрудников:

{
    "content": [
        {
            "id": 1,
            "title": "movie",
            "genreId": [
                1,
                3,
                4
            ],
            "genre": [
                "Comedy",
                "Drama"
            ],
            "director": null,
            "releaseDate": "2006-11-30T00:00:00.000+0000",
            "distributor": null,
            "language": "Arabic",
            "actor": null,
            "creator": null,
            "duration": 1200
        },
        {
            "id": 2,
            "title": null,
            "genreId": null,
            "genre": null,
            "director": null,
            "releaseDate": null,
            "distributor": null,
            "language": null,
            "actor": null,
            "creator": null,
            "duration": 0
        },
        {
            "id": 9,
            "title": null,
            "genreId": null,
            "genre": null,
            "director": null,
            "releaseDate": null,
            "distributor": null,
            "language": null,
            "actor": null,
            "creator": null,
            "duration": 0
        },
        {
            "id": 4,
            "title": null,
            "genreId": null,
            "genre": null,
            "director": null,
            "releaseDate": null,
            "distributor": null,
            "language": null,
            "actor": null,
            "creator": null,
            "duration": 0
        },
        {
            "id": 3,
            "title": null,
            "genreId": null,
            "genre": null,
            "director": null,
            "releaseDate": null,
            "distributor": null,
            "language": null,
            "actor": null,
            "creator": null,
            "duration": 0
        },
        {
            "id": 6,
            "title": null,
            "genreId": null,
            "genre": null,
            "director": null,
            "releaseDate": null,
            "distributor": null,
            "language": null,
            "actor": null,
            "creator": null,
            "duration": 0
        },
        {
            "id": 5,
            "title": null,
            "genreId": null,
            "genre": null,
            "director": null,
            "releaseDate": null,
            "distributor": null,
            "language": null,
            "actor": null,
            "creator": null,
            "duration": 0
        },
        {
            "id": 8,
            "title": null,
            "genreId": null,
            "genre": null,
            "director": null,
            "releaseDate": null,
            "distributor": null,
            "language": null,
            "actor": null,
            "creator": null,
            "duration": 0
        },
        {
            "id": 7,
            "title": null,
            "genreId": null,
            "genre": null,
            "director": null,
            "releaseDate": null,
            "distributor": null,
            "language": null,
            "actor": null,
            "creator": null,
            "duration": 0
        },
        {
            "id": 1,
            "title": "movie",
            "genreId": [
                1,
                3,
                4
            ],
            "genre": [
                "Comedy",
                "Drama"
            ],
            "director": null,
            "releaseDate": "2006-11-30T00:00:00.000+0000",
            "distributor": null,
            "language": "Arabic",
            "actor": null,
            "creator": null,
            "duration": 1200
        }
    ],
    "pageable": {
        "sort": {
            "sorted": false,
            "unsorted": true,
            "empty": true
        },
        "offset": 0,
        "pageSize": 10,
        "pageNumber": 0,
        "paged": true,
        "unpaged": false
    },
    "facetResultPages": [],
    "facetQueryResult": {
        "content": [],
        "pageable": "INSTANCE",
        "last": true,
        "totalPages": 1,
        "totalElements": 0,
        "size": 0,
        "number": 0,
        "sort": {
            "sorted": false,
            "unsorted": true,
            "empty": true
        },
        "numberOfElements": 0,
        "first": true,
        "empty": true
    },
    "highlighted": [],
    "maxScore": null,
    "fieldStatsResults": {},
    "suggestions": [],
    "facetFields": [],
    "allFacets": [
        null
    ],
    "alternatives": [],
    "facetPivotFields": [],
    "totalPages": 1,
    "totalElements": 10,
    "size": 10,
    "number": 0,
    "sort": {
        "sorted": false,
        "unsorted": true,
        "empty": true
    },
    "numberOfElements": 10,
    "first": true,
    "last": true,
    "empty": false
}

Может кто-нибудь объяснить, почему существует несколько нулевых данных и почемуактер, режиссер, создатель и распределенные поля в моем документе равны нулю?

...