2010-12-15 18 views
8

mam nadklasą Questions i jej podklasa MultipleChoiceQuestionsjeden do wielu mapowania do własności nadklasy

Nadklasa ma pole activity

Chcę stworzyć Set<MultipleChoiceQuestions> i używać OneToMany adnotacji przy użyciu mappedBy = "activity"

na przykład

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "activity") 
private Set<NQIMultipleChoiceQuestions> mcqQuestions = new HashSet<NQIMultipleChoiceQuestions>(); 

ja dostaję ten błąd:

org.hibernate.AnnotationException: mappedBy reference an unknown target entity property 

Jednak to działa dobrze, jeśli tworzę zbiór jednostek superklasy

przykład

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "activity") 
private Set<NQIQuestions> questions = new HashSet<NQIQuestions>(); 

Czy istnieje sposób mapowania na własność nadklasy?

+0

@sahil, dwie linie, które pokazałeś - gdzie twierdziłeś, że pierwsza nie działała, ale druga tak - różniła się tylko nazwą zmiennej "Set". –

+0

@binil: ya .. właściwie w drugim przypadku pytania są podstawową klasą, podczas gdy mcqQuestion jest podklasą. – shailesh

+0

@OneToMany (fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "activity") \t prywatny zestaw questions = new HashSet (); – shailesh

Odpowiedz

14

Okazało się, że rozwiązanie tego problemu ... :)

Możemy to osiągnąć tylko poprzez zdefiniowanie targetEntity =? w OneToMany definicji ..

np ..

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "activity" , targetEntity=NQIQuestions.class)  
private Set<NQIMultipleChoiceQuestions> mcqQuestions = new HashSet<NQIMultipleChoiceQuestions>(); 
+7

Ale czy zestaw nie zawiera teraz również obiektów innych podtypów? –

+0

Niestety, to prawda. Możliwym rozwiązaniem z Hibernate byłoby użycie '@Where (klauzula =" ... ")' z odpowiednim where-clause, aby załadować tylko poprawny podtyp (y). –

0

Prawdopodobnie używasz Hibernate i nie obsługuje tej funkcji (Hibernate ORM HHH-4233: cant bind a child using mappedby relating to a parent attribute(polymorphism). Funkcja zostanie odrzucony ze względów kontrowersyjne. Jest tam komentarz Nicholas Stuart, która zapewnia więcej linków na ten temat, w tym ten jeden, dając pewne obejścia.. Chris Wong's Development Blog: Polymorphic one to many relationships in Hibernate

Gdy wiemy, że hibernacji tylko problem, możemy przełączyć się do czegoś innego OpenJPA, EclipseLink zrobić suppo rt it. Dodaj komentarz, jeśli istnieje więcej ram do wyświetlenia tutaj.

Powiązane problemy