在MongoDB中按超类存储对象

时间:2019-03-27 20:35:36

标签: spring mongodb spring-boot

是否可以通过用户类中的公共超类存储某种对象的集合?我的课程结构基本上如下:

public abstract class Project { }

public class FooProject extends Project { }

public class BarProject extends Project { }

public class ApplicationUser {

    private Collection<Project> projects;

    public Collection<Project> getProjects() { ... }
    public void setProjects(...) { ... }

}

public interface ApplicationUserRepository extends MongoRepository<ApplicationUser, Long> { }

如果我尝试将一个FooProject添加到projects集合中并保存用户,我会开始遇到类似org.springframework.data.mapping.MappingException: No property user found on entity class org.example.FooProject to bind constructor parameter to!的错误。我猜那是因为ApplicationUser类中没有设置程序来处理FooProject

我已经看到了一些问题/示例,其中子类具有相同的@Collection批注,但是我不确定究竟买了什么。在这些示例中,为每种类型声明了单独的存储库接口。即便如此,我如何将来自不同存储库的对FooProject的引用与用户相关联?理想情况下,我只为ApplicationUser对象提供一个存储库,或者为ApplicationUser和超类Project提供两个存储库。每个项目只能与一个用户关联。

0 个答案:

没有答案