2017-04-07 5 views
0

Ich weiß, dass dieses Problem in verschiedenen Fragen behandelt wurde und die Antwort in HERE scheint die logische Lösung zu sein, aber für mich hilft es irgendwie nicht. Der Fehler tritt auf, wenn nur eine bestimmte Entität gespeichert oder aktualisiert wird. Bei allen anderen ist es seltsam \ oO Werke/Hibernate 4.3.11 mit c3p0 0.9.5.2 setCharacterStream verursacht AbstractMethodError

Hier ist meine Stacktrace:

Exception in thread "AWT-EventQueue-0" java.lang.AbstractMethodError 
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setCharacterStream(JtdsPreparedStatement.java:1274) 
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setCharacterStream(NewProxyPreparedStatement.java:956) 
at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$4$1.doBind(ClobTypeDescriptor.java:124) 
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:90) 
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:286) 
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:281) 
at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:67) 
at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:616) 
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1901) 
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1862) 
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1839) 
at org.hibernate.loader.Loader.doQuery(Loader.java:910) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:355) 
at org.hibernate.loader.Loader.doList(Loader.java:2554) 
at org.hibernate.loader.Loader.doList(Loader.java:2540) 
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370) 
at org.hibernate.loader.Loader.list(Loader.java:2365) 
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:497) 
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) 
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236) 
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300) 
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) 
at my.software..persistent.hibernate.dao.LanguageTextDaoHibernate.getLanguageKey(LanguageTextDaoHibernate.java:241) 
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:606) 
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) 
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) 
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) 
at com.sun.proxy.$Proxy83.getLanguageKey(Unknown Source) 
at my.software..util.language.LanguageTextUtil.getLanguageKey(LanguageTextUtil.java:125) 
at my.software..propertysheet.TextProperties.setLanguageText(TextProperties.java:505) 
at my.software..gui.dialog.spm.TextProducerDialog.buttonGetValues_actionPerformed(TextProducerDialog.java:296) 
at my.software..gui.dialog.spm.TextProducerDialog.access$1(TextProducerDialog.java:279) 
at my.software..gui.dialog.spm.TextProducerDialog$2.actionPerformed(TextProducerDialog.java:201) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
at java.awt.Component.processMouseEvent(Component.java:6516) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 
at java.awt.Component.processEvent(Component.java:6281) 
at java.awt.Container.processEvent(Container.java:2229) 
at java.awt.Component.dispatchEventImpl(Component.java:4872) 
at java.awt.Container.dispatchEventImpl(Container.java:2287) 
at java.awt.Component.dispatchEvent(Component.java:4698) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 
at java.awt.Container.dispatchEventImpl(Container.java:2273) 
at java.awt.Window.dispatchEventImpl(Window.java:2719) 
at java.awt.Component.dispatchEvent(Component.java:4698) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747) 
at java.awt.EventQueue.access$300(EventQueue.java:103) 
at java.awt.EventQueue$3.run(EventQueue.java:706) 
at java.awt.EventQueue$3.run(EventQueue.java:704) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
at java.awt.EventQueue$4.run(EventQueue.java:720) 
at java.awt.EventQueue$4.run(EventQueue.java:718) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154) 
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182) 
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219) 
at java.awt.Dialog.show(Dialog.java:1082) 
at java.awt.Component.show(Component.java:1655) 
at java.awt.Component.setVisible(Component.java:1607) 
at java.awt.Window.setVisible(Window.java:1014) 
at java.awt.Dialog.setVisible(Dialog.java:1005) 
at com.still.common.gui.dialog.DialogTemplate.createDialog(DialogTemplate.java:168) 
at my.software..gui.dialog.spm.TextProducerDialog.init(TextProducerDialog.java:262) 
at my.software..gui.dialog.spm.TextProducerDialog.<init>(TextProducerDialog.java:126) 
at my.software..gui.action.spm.SpmTextAction.getActionNew(SpmTextAction.java:44) 
at my.software..gui.toolbar.spm.SpmTextToolBar$3.actionPerformed(SpmTextToolBar.java:120) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) 
at java.awt.Component.processMouseEvent(Component.java:6516) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 
at java.awt.Component.processEvent(Component.java:6281) 
at java.awt.Container.processEvent(Container.java:2229) 
at java.awt.Component.dispatchEventImpl(Component.java:4872) 
at java.awt.Container.dispatchEventImpl(Container.java:2287) 
at java.awt.Component.dispatchEvent(Component.java:4698) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 
at java.awt.Container.dispatchEventImpl(Container.java:2273) 
at java.awt.Window.dispatchEventImpl(Window.java:2719) 
at java.awt.Component.dispatchEvent(Component.java:4698) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747) 
at java.awt.EventQueue.access$300(EventQueue.java:103) 
at java.awt.EventQueue$3.run(EventQueue.java:706) 
at java.awt.EventQueue$3.run(EventQueue.java:704) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
at java.awt.EventQueue$4.run(EventQueue.java:720) 
at java.awt.EventQueue$4.run(EventQueue.java:718) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 

Wenn ich die app das c3p0 Log laden ist:

INFO [main] 07.04.17 14:37:17.389 [email protected]: Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10] 
INFO [main] 07.04.17 14:37:17.814 [email protected]: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> 2wu2r69nk3dcuwd4fg5w|1a4bd3d, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> org.hsqldb.jdbcDriver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> 2wu2r69nk3dcuwd4fg5w|1a4bd3d, idleConnectionTestPeriod -> 0, initialPoolSize -> 10, jdbcUrl -> jdbc:jtds:sqlserver://derlkim0425:1433/spm_dev_mirco, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 120, maxStatements -> 70, maxStatementsPerConnection -> 0, minPoolSize -> 5, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ] 

Dieser Code-Schnipsel mein pom.xml ist (I musste c3p0 von Hibernate-c3p0 auszuschließen, wie es ältere Version geladen wurde, die nicht kompatibel mit JDBC4 Treiber)

<!-- Hibernate Stuff --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.11.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-annotations</artifactId> 
     <version>3.5.6-Final</version> 
    <!-- Hibernate Core needs a higher version so we exclude this one --> 
     <exclusions> 
      <exclusion> 
       <groupId>org.hibernate</groupId> 
       <artifactId>hibernate-commons-annotations</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.0-api</artifactId> 
     <version>1.0.1.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>3.1.0.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-c3p0</artifactId> 
     <version>4.3.11.Final</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>c3p0</artifactId> 
       <groupId>c3p0</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>com.mchange</groupId> 
     <artifactId>c3p0</artifactId> 
     <version>0.9.5.2</version> 
    </dependency> 
war

Ich bin ahnungslos, wo die Ursache jetzt suchen ... Könnte dies mit einigen JPA-Konfiguration in der LanguageText Entity-Klasse verbunden sein? Nichts Besonderes in dort obwohl ...

Danke für irgendwelche Hinweise zu diesem.

+0

Ich habe gerade festgestellt, dass es scheint, dass mein Projekt JDBC4 nicht verwendet. Es druckt dieses Log 'INFO [main] 07.04.17 15: 19: 11.978 [email protected]alLobCreation: HHH000423: Die kontextabhängige LOB-Erstellung wurde deaktiviert, da der JDBC-Treiber die JDBC-Version [3] mit weniger als 4' gemeldet hat . Aber Spring 4.3.11 sollte JDBC4 verwenden ... jetzt bin ich noch verwirrter – m0rb

+0

Es hat nichts mit Spring noch C3P0 zu tun ... Der Treiber, den Sie verwenden, ist ein JDBC3-Treiber nicht ein JDBC4-Treiber (der auch klar angegeben wird auf [der Website] (http://jtds.sourceforge.net)). Außerdem sollten Sie die 'hibernate-annotations'-Abhängigkeit entfernen, da diese bereits von core eingebunden (oder verwaltet) werden sollte. –

+0

@ M.Deinum vielen Dank für Ihre Antwort. Da die Anwendung, an der ich arbeite, sehr alt ist und es übernommen hat, zu neueren Technologien zu überdenken, habe ich viel zu tun. Gibt es einen Weg von JTDS zu etw. mit JDBC4 ohne Probleme? Ich habe versucht, den ursprünglichen sqljdbc-Treiber von Microsoft, aber dann die Hälfte der HQL-Anweisungen geben mir Fehler wie 'Konvertierung von Nvarchar zu Clob nicht möglich '. Irgendeine Idee für eine gute Annäherung hier? Warum gibt es keinen Nachfolger von JTDS, der JDBC4 verwendet? – m0rb

Antwort

0

So fand ich endlich heraus, was mein Problem war, und wie immer saß es zwischen Stuhl und Bildschirm. Das Problem mit der setCharacterStream-Methode wurde durch Hinzufügen eines echten JDBC4-Treibers gelöst. Ich wählte den von Microsoft selbst. Ich werde nicht die Menge der Probleme erwähnen, die mit dieser Wahl kam, aber es löste das Problem, das im Titel angegeben wird.

Für diejenigen, die sich interessieren: Mein Problem mit der Konvertierung war wirklich dumm. Ich habe mir die Entity-Klasse näher angesehen und eine @Lob-Annotation in einem String-Feld gefunden. Nun ... Entfernen, löste das Problem der Konvertierung. Ich habe keine Ahnung, warum das mit JTDS funktioniert (ich nehme an, JTDS ist schlauer als der MS-Treiber und hat eine interne automatische Konvertierung für solche Fälle ...).

Verwandte Themen