我有一個子類和一個超類。但是,只有超類的字段需要保留。使用Hibernate作爲超類繼承子類
session.saveOrUpdate((Superclass) subclass);
如果我這樣做,我會得到以下例外。
org.hibernate.MappingException: Unknown entity: test.Superclass
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:628)
at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1366)
at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.getEntityState(AbstractSaveEventListener.java:535)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:103)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:527)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:523)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
at $Proxy54.saveOrUpdate(Unknown Source)
如何將一個子類作爲超類繼承?我不喜歡創建一個超類實例,然後從子類實例傳遞值。因爲如果未來將額外的字段添加到超類中,很容易忘記更新邏輯。
'Superclass'是否被映射?例外情況表明它不是。 – 2010-06-17 09:46:45
Ooops,應該是「org.hibernate.MappingException:未知實體:test.Subclass」。 – franziga 2010-06-17 09:59:49