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