J'ai une sous-classe et une superclasse. Cependant, seuls les champs de la superclasse doivent être conservés.Sous-classe Persist en tant que superclasse utilisant Hibernate
session.saveOrUpdate((Superclass) subclass);
Si je fais ce qui précède, j'obtiendrai l'exception suivante.
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)
Comment puis-je conserver une sous-classe en tant que superclasse? Je ne préfère pas créer une instance de superclasse, puis passer les valeurs de l'instance de la sous-classe. Parce que, il est facile d'oublier la mise à jour de la logique si des champs supplémentaires sont ajoutés à la superclasse dans le futur. Ce que vous essayez d'accomplir vous causera beaucoup de problèmes.
Est-ce que 'Superclass' est réellement mappé? L'exception suggère que ce n'est pas le cas. –
Oups, cela devrait être "org.hibernate.MappingException: Entité inconnue: test.Subclass". – franziga