Ik heb een probleem met NHibernate in combinatie met Inheritance. Ik zal eerst kort de situatie beschrijven.
Situatie
Plaatjes zeggen meer dan woorden

Ik maak gebruik van het "Table Per Subclass" mechanisme.
Okay, het probleem is als volgt. Wanneer iemand een Teacher EN Student is krijg ik de onderstaande melding:
Dit krijg ik als ik gewoon List<Person>() aanroep. Op één of andere manier probeert NHibernate er al een ander type van te maken. Het rare is, als ik alle teacher's opvraag dan verschijnt deze melding niet en krijg ik alle teacher's te zien. Als ik alle Students opvraag dan komt de fout wel naar boven.
Ik heb al geprobeerd om de query aan te passen maar dit werkt ook niet. Ik krijg dan helemaal geen resultaten meer terug
Ik kwam op de onderstaande site uit maar ik hoop niet dat dit waar is:
Situatie
Plaatjes zeggen meer dan woorden

Ik maak gebruik van het "Table Per Subclass" mechanisme.
Okay, het probleem is als volgt. Wanneer iemand een Teacher EN Student is krijg ik de onderstaande melding:
code:
1
| Object with id: 2 was not of the specified subclass: Teacher (loading object was of wrong class [Student]) |
Dit krijg ik als ik gewoon List<Person>() aanroep. Op één of andere manier probeert NHibernate er al een ander type van te maken. Het rare is, als ik alle teacher's opvraag dan verschijnt deze melding niet en krijg ik alle teacher's te zien. Als ik alle Students opvraag dan komt de fout wel naar boven.
Ik heb al geprobeerd om de query aan te passen maar dit werkt ook niet. Ik krijg dan helemaal geen resultaten meer terug
code:
1
| from Person p where p.class = Person |
Ik kwam op de onderstaande site uit maar ik hoop niet dat dit waar is:
Ik heb mijn probleem al aangekaart op het NHibernate forum zelf, maar ik krijg daar maar geen reactie. Ik hoop dat één van jullie mij verder kan helpen.down vote
I fell in this same error today (for the second time actually) and I finally realized what's the issue here.
I don't know about others ORM but using nHibernate you can't share an Id over two different classes (subclasses). That's not the way inheritance is supposed to be in nHibernate. Table-per-class hierarchy is meant to have separate tables to specify a parent table (in your issue you are trying the opposite).
All this actually make sense since to access Client or Employee you actually refer to the Person Id (at first I didn't paid attention to this but now is totally clear).
The solution is to refactor the domain model and change the relationship between you classes from as "is-a" to a "has-a" relationship and expose common properties (if needed) via an interface.
PSN: Norfirin