Lukas Barton napsal(a):
Petr Kolesa wrote:

Dobry den,

hraju si s Hibernate (+Spring)  a narazil jsem na nasledujici chovani.

Mam tridu Visit, velmi primocare hb mapovani. Kdyz ji ukladam prostrednictvim Hibernate do DB vsechno funguje skvele.

Pak mam potomka tehle tridy: tridu MockVisit (trida nedela nic specialniho, jen poskytuje instance pouzite v Junit testech)

Kdyz instanci MockVisit predhodim Hibernate k ulozedni do DB, dostanu chybu:

org.hibernate.MappingException: Unknown entity: ...model._mock.MockVisit

Zda se mi, jako by Hibernate nedokazala zjistit, ze MockVisit je potomkem Visit. Tohle je normalni chovani Hibernate nebo nekde delam chybu?


Je to normalni chovani Hibernate.
Ukladat lze jen namapovane tridy - podivej se na mapovani dedicnosti v dokumentaci.


Diky za radu, ale asi jsem se nevyjadril dost presne. Kapitolu 9, o mapovani dedicnosti, jsem prosel nekolikrat a reseni jsem nenasel.

Jde mi o tohle: Po Hibernate chci, aby mi ukladala instance tridy Visit. Z hlediska DB nic jako potomek tridy Visit neexistuje. Zatimco v Jave mam nejake servisni objekty (vzasade jen kvuli prototypovani pri vyvoji a Junit testum), ktere jsou z hlediska DB zcela ekvivalentni tride Visit. Prikladem takove servisni tridy je MockVisit coz je potomek Visit.

V jave normalne pouzivam to, ze podtyp muze zastoupit nadtyp. Takze do fce se signaturou

void mojeFunkce(Visit navsteva)

muzu posilat jak instance Visit, tak i MockVisit (ve funkci se s instanci vzdy pracuje jako s instanci Visit)

No a moje otazka je, jestli k tomuhle chovani jde premluvit i Hibernate, tj. kdyz ji soupnu MockVisit, jestli by s nim mohla zachazet jako s Visit.

diky

kolisko


Odpovedet emailem