ich eine Aufzählung in meinem Domain-Modell bin, aber ich bekomme die folgende Fehlermeldung, wenn ich versuche, ein Objekt in die Datenbank zu beharren:Wie ein Objekt beharren, dass eine Aufzählung Feld hat
Exception in thread "main" java.lang.ClassCastException: nl.ru.cmbi.pdbeter.core.model.enums.Enum_WhifFunction cannot be cast to java.lang.String at org.hibernate.validator.NotEmptyValidator.isValid(NotEmptyValidator.java:36) at org.hibernate.validator.ClassValidator.getInvalidValues(ClassValidator.java:386) at org.hibernate.validator.ClassValidator.getInvalidValues(ClassValidator.java:352) at org.hibernate.validator.event.ValidateEventListener.validate(ValidateEventListener.java:139) at org.hibernate.validator.event.ValidateEventListener.onPreInsert(ValidateEventListener.java:172) at org.hibernate.action.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:142) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:65) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117) 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 nl.ru.cmbi.pdbeter.core.controller.DAO.GenericDAO.makePersistent(GenericDAO.java:73) at nl.ru.cmbi.pdbeter.core.controller.DAO.WhifFunctionDAO.getWhifFunctionSet(WhifFunctionDAO.java:36) at nl.ru.cmbi.pdbeter.core.controller.DAO.LoggedErrorWhifDAO.updateWhifFunctionSet(LoggedErrorWhifDAO.java:42) at nl.ru.cmbi.pdbeter.whifclient.controller.WhifFunctionsUpdater.executeWhifFunctionsByAccessionCode(WhifFunctionsUpdater.java:93) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) at $Proxy31.executeWhifFunctionsByAccessionCode(Unknown Source) at nl.ru.cmbi.pdbeter.whifclient.controller.WhifFunctionsExecutor.executeWhifFunctions(WhifFunctionsExecutor.java:26) at nl.ru.cmbi.pdbeter.whifclient.controller.WhifClient.updateWhifFunctions(WhifClient.java:22) at nl.ru.cmbi.pdbeter.updater.controller.UpdaterMain.start(UpdaterMain.java:65) at nl.ru.cmbi.pdbeter.updater.controller.UpdaterMain.main(UpdaterMain.java:44)
Dies ist Mein Domänenmodell:
Warum funktioniert die @Enumerated-Annotation nicht, da ich denke, dass sie funktionieren sollte? Und wenn es so funktioniert, wie es soll, wie kann ich es so funktionieren lassen, wie ich jetzt denke, dass es funktioniert? Oder mit anderen Worten: Wie behebe ich ein Objekt mit einem Aufzählungsfeld?
EDIT: Danke für alle Antworten. Das NotEmpty ist zufällig da, ich habe es nicht gesehen. Ich musste viele Mappings machen, also kopierte ich eine Menge Zeug, aber vergaß versehentlich das NotEmpty zu entfernen, als ich von String zu Enum wechselte. Das nächste Mal, wenn ich versuchen werde, mich näher mit dem StackTrace zu beschäftigen, habe ich den NotEmptyValidator total vermisst.
die vollständige Stacktrace anzeigen, bitte. – axtavt
Bitte geben Sie eine SSCCE an. BTW, Enum_WhifFunction folgt nicht Java-Namenskonventionen. Ich empfehle, den Unterstrich loszuwerden. – Puce
Der Stacktrace wurde hinzugefügt. – FinalArt2005