В SpringBoot 1 TypeAlias («имя») работает должным образом, но если я перехожу на SpringBoot 2, он не создает экземпляры классов правильно.
@Document(collection = "test")
@TypeAlias("y")
public class TestY extends Test {
private String y;
public String getY() {
return y;
}
public void setY(String y) {
this.y = y;
}
}
@Document(collection = "test")
public class Test {
@Id
protected String id;
public Test() {
this.id = id;
}
}
@Document(collection = "test")
@TypeAlias("x")
public class TestX extends Test {
private String x;
public String getX() {
return x;
}
public void setX(String x) {
this.x = x;
}
}
Выполнения:
Если я загружаю только экземпляры -> Тестовые экземпляры должны быть TestX или TestY, но все они являются Test
List<Test> test = testRepository.findAll();
Если я сохраню до Сущности -> Тестовые экземпляры после загрузки создаются прямо как TestX и TestY
TestY y = new TestY();
y.setY("y");
testRepository.save(y);
TestX x = new TestX();
x.setX("x");
testRepository.save(x);
List<Test> test = testRepository.findAll();
В Spring Boot 1 он работает как положено.
Зависимости
до: spring-boot-starter-data-mongodb-1.5.21.RELEASE
после: spring-boot-starter-data-mongodb-2.1.11.RELEASE
Репозитории
@Repository
public interface TestRepository extends MongoRepository<Test, String> {
}