Почему Spring автоматически приводит объект mongoDB к типу базового класса - PullRequest
1 голос
/ 23 октября 2019

У меня есть класс сущности java как

@Document(collection = "ftabcd")
class FTABCD{
@Id
String id

List<Base> baseList;

}

class Base {
String a;String b;
}

@TypeAlias("existingchild1name")
class child1 extends Base {
 String child1refNO;
}

@TypeAlias("existingchild2name")
class child2 extends Base {
 String child2refNO;
}

Итак, теперь в базе данных есть такая запись

{
"_id":ObjectId("5323465645431235465"),
"baseList": [
      {
    "child1refNo":"child1value",
    "a":"avalue", 
    "b":"bvalue",
    "_class":"existingchild1name"
      }
            ]
}

, поэтому, когда я это сделаю,

FTABCDRepository.findById (5323465645431235465);

объект, который я получаю из базы данных, читает "baseList" как список, и каждый элемент списка преобразуется в базовый класс,

baseList = [Base (a = "avalue", b = "bvalue")]

, хотя он мог быть преобразован в Child1 или Child2. Как я могу сделать так, чтобы он читал так же, как тип Child1 или тип Child2, и с ним были связаны child1refNo или child2refNo.

Ожидаемый результат должен быть baseList = [child1 (child1refNo = "child1value", a ="avalue", b = "bvalue")]

...