我有一个超类Questions
及其子类MultipleChoiceQuestions
超类有一个字段activity
我想使用Set<MultipleChoiceQuestions>
创建OneToMany
并使用mappedBy = "activity"
注释
e.g。
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "activity" )
private Set<NQIMultipleChoiceQuestions> mcqQuestions = new HashSet<NQIMultipleChoiceQuestions>();
我收到此错误:
org.hibernate.AnnotationException: mappedBy reference an unknown target entity property
但是,如果我创建一组超类实体
,它可以正常工作e.g。
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "activity")
private Set<NQIQuestions> questions = new HashSet<NQIQuestions>();
有没有办法映射到超类的属性?
答案 0 :(得分:17)
为此找到了解决方案...... :)
我们可以通过定义targetEntity =来实现这一目标吗?在OneToMany定义..
例如..
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "activity" , targetEntity=NQIQuestions.class)
private Set<NQIMultipleChoiceQuestions> mcqQuestions = new HashSet<NQIMultipleChoiceQuestions>();
答案 1 :(得分:0)
可能您使用的是 Hibernate并且它不支持此功能(Hibernate ORM HHH-4233: cant bind a child using mappedby relating to a parent attribute(polymorphism)。该功能因有争议的原因而被拒绝.Nicholas Stuart在那里发表了一条评论,提供了有关该功能的更多链接主题,包括这个主题提供了一些解决方法:Chris Wong's Development Blog: Polymorphic one to many relationships in Hibernate。
一旦我们知道它只是Hibernate问题,我们就可以切换到别的东西。 OpenJPA,EclipseLink支持。如果此处列出了更多框架,请添加评论。