是否可以通过用户类中的公共超类存储某种对象的集合?我的课程结构基本上如下:
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
提供两个存储库。每个项目只能与一个用户关联。