Как лучше всего объединить 2 документа в Spring Data? - PullRequest
0 голосов
/ 10 июня 2018

У меня есть 2 класса Author и Book.

@NoArgsConstructor
@AllArgsConstructor
@Getter
@EqualsAndHashCode
@ToString
class Person {

    @Id
    private BigInteger id;

    private String firstName;

    private String surName;

    @JsonFormat(pattern="yyyy-MM-dd")
    private LocalDate dateOfBirth;

    private boolean deleted;

}


@NoArgsConstructor
@Getter
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public final class Author extends Person {

    @Builder
    public Author(BigInteger id, String firstName, String surName, LocalDate dateOfBirth, String bio, boolean deleted) {
        super(id, firstName, surName, dateOfBirth, deleted);
        this.bio = bio;
    }

    private String bio;

}


@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@EqualsAndHashCode
@ToString
public final class Book {

    @Id
    private BigInteger id;

    private String title;

    @DBRef
    private Author author;

}

Как мне найти книги автора, который не был удален?Если я сделаю это:

@Repository
public interface BookRepository extends MongoRepository<Book, BigInteger> {

    Set<Book> getByAuthor_Deleted(boolean isDeleted);

}

, тогда будет выдано исключение org.springframework.data.mapping.MappingException: Invalid path reference author.deleted! Associations can only be pointed to directly or via their id property!.

Не могли бы вы уточнить, как я могу решить эту задачу?

1 Ответ

0 голосов
/ 10 июня 2018

Попробуйте это.Это должно работать.

Book findByAuthor_IdAndAuthor_Deleted(Biginteger id, boolean isDeleted)

Передать id и false этой функции.

...