Для Spring-data MongoTemplate, в дополнение к полям в вашем объекте, также сохраняется дополнительное имя поля _class, которое сообщает шаблону, какой класс он сохраняет.
Вы не сможете правильно сохранить объект, используяхранилище другого объекта, независимо от отношения наследования.
CrudRepository for Spring по сути является шаблоном Generic Dao.Поскольку все ваши dao реализуют интерфейс и имеют метод save, вы сможете сохранить любой объект, зная, какой dao использовать.
Для этого вы можете создать RepositoryFactory, который используется дляначальный ваш репозиторий, который предлагает функцию getRepository (тип класса), которая предоставляет вам соответствующий репозиторий для вашего класса.Тогда вы сможете сделать что-то вроде:
repositoryFactory.getRepository(myType.getClass()).save(myType);
Более подробную информацию вы можете найти здесь: http://www.rainydayinn.com/dev/dao-factory-and-generic-dao-wiring-in-spring/
Если вы хотите сохранить все свои объекты в одной коллекции, вы можетеиспользуйте аннотацию @Document (collection = "mycollection").Если вы не даете имя коллекции, по умолчанию каждый класс сохраняется в отдельной коллекции в соответствии с именем класса.