Posiadanie dwóch rodzajów jednostek, które są mapowane do dwóch klas Javy w jednej kolekcji MongoDB:Wiosna danych MongoDB Repozytoria nie implementują dziedziczenie poprawnie
@Document
public class Superclass { ... }
@Document(collection = "superclass")
public class Subclass extends Superclass { ... }
i dwa repozytoria dla tych podmiotów:
public interface SuperclassRepository extends MongoRepository<Superclass, String> {}
public interface SubclassRepository extends MongoRepository<Subclass, String> {}
MongoRepositories
nie obsługuje poprawnie dziedziczenia obiektów. Podczas sprawdzania dla wszystkich obiektów Subclass
(np. SubclassRepository.findAll()
) zestaw wyników zawiera obiekty Superclass
, które są tworzone (lub przynajmniej próbowano je utworzyć) z wartościami pustymi dla pól, które są częścią Subclass
, ale nie są częścią Superclass
.
Oczekiwany wynik będzie, że SubclassRepository
powinien zwrócić tylko Subclass
obiektów, natomiast SuperclassRepository
powinien powrócić Superclass
i Subclass
obiektów. Działa to w Spring Data JPA.
Czy ktoś napotkał ten błąd i ma rozwiązanie tego problemu?
Stworzyłem [bilet] (https://jira.spring.io/brows e/DATAMONGO-1142) i [żądanie pobrania] (https://github.com/spring-projects/spring-data-mongodb/pull/266) dla tego błędu. –