Java Hibernate 4连接。自动提交=错误忽略

Java Hibernate 4连接。自动提交=错误忽略,java,hibernate,tomcat,guice,guice-persist,Java,Hibernate,Tomcat,Guice,Guice Persist,我们在Tomcat6上有一个使用Java、Hibernate4、Guice3和GuicePersist3的应用程序 connection.autocommit在hibernate.cfg.xml文件中配置为false: <session-factory> <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <property name=

我们在Tomcat6上有一个使用Java、Hibernate4、Guice3和GuicePersist3的应用程序

connection.autocommit在hibernate.cfg.xml文件中配置为false:

<session-factory>
    <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/dev</property>
    <property name="connection.username">root</property>
    <property name="connection.password">root</property>
    <property name="connection.autocommit">false</property>
    <property name="connection.proof_property">true</property>

    <!-- Disable second-level cache. -->
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
    <property name="cache.use_query_cache">false</property>
    <property name="cache.use_minimal_puts">false</property>
    <property name="max_fetch_depth">3</property>

    <!-- Print SQL to stdout. -->
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>

    <property name="id.new_generator_mappings">true</property>

    <!-- Drop and then re-create schema on SessionFactory build, for testing. -->
    <property name="hbm2ddl.auto">create</property>

    <!-- Bind the getCurrentSession() method to the thread. -->
    <property name="current_session_context_class">thread</property>

    <!-- configuration pool via c3p0--> 
    <property name="c3p0.initialPoolSize">0</property>
    <property name="c3p0.acquire_increment">1</property>
    <property name="c3p0.max_size">32</property>
    <property name="c3p0.max_statements">100</property> 
    <property name="c3p0.min_size">0</property> 
    <property name="c3p0.timeout">600</property> <!-- seconds --> 

    <!-- Hibernate XML mapping files -->
    <!-- <mapping resource="org/MyClass.hbm.xml"/>-->

    <!-- Hibernate Annotations (and package-info.java)-->
    <mapping package="model"/>

</session-factory>

org.hibernate.dialogue.mysql5innodbdialogue
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/dev
根
根
假的
真的
org.hibernate.cache.NoCacheProvider
假的
假的
3.
真的
真的
真的
创造
线
0
1.
32
100
0
600
但在部署时,日志文件显示autocommit设置为true:

INFO: Starting Servlet Engine: Apache Tomcat/6.0.35
28 janv. 2013 16:03:01 org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
28 janv. 2013 16:03:01 org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.1.9.Final}
28 janv. 2013 16:03:01 org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
28 janv. 2013 16:03:01 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
28 janv. 2013 16:03:01 org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
28 janv. 2013 16:03:01 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
28 janv. 2013 16:03:01 org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
28 janv. 2013 16:03:01 org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator instantiateExplicitConnectionProvider
INFO: HHH000130: Instantiating explicit connection provider: org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
28 janv. 2013 16:03:01 org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider configure
INFO: HHH010002: C3P0 using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/dev
28 janv. 2013 16:03:01 org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider configure
INFO: HHH000046: Connection properties: {user=root, password=****, autocommit=true, proof_property=true, release_mode=auto}
28 janv. 2013 16:03:01 org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider configure
INFO: HHH000006: Autocommit mode: true
28 janv. 2013 16:03:01 com.mchange.v2.log.MLog <clinit>
INFO: MLog clients using java 1.4+ standard logging.
28 janv. 2013 16:03:02 com.mchange.v2.c3p0.C3P0Registry banner
INFO: Initializing c3p0-0.9.1 [built 16-January-2007 14:46:42; debug? true; trace: 10]
28 janv. 2013 16:03:02 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager
INFO: Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@b6868296 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@8d0e5680 [ acquireIncrement -> 1, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hgeby98szzd5hkbs91s5|a69b6b, idleConnectionTestPeriod -> 0, initialPoolSize -> 0, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 600, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 32, maxStatements -> 100, maxStatementsPerConnection -> 0, minPoolSize -> 0, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@d4b5ff9b [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 1hgeby98szzd5hkbs91s5|75b3ee, jdbcUrl -> jdbc:mysql://localhost:3306/dev, properties -> {user=******, password=******, autocommit=true, proof_property=true, release_mode=auto} ], preferredTestQuery -> null, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLocation -> null, identityToken -> 1hgeby98szzd5hkbs91s5|1a9bea3, numHelperThreads -> 3 ]
28 janv. 2013 16:03:02 org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
28 janv. 2013 16:03:02 org.hibernate.engine.jdbc.internal.LobCreatorBuilder useContextualLobCreation
INFO: HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
28 janv. 2013 16:03:02 org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
28 janv. 2013 16:03:02 org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
28 janv. 2013 16:03:02 org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000227: Running hbm2ddl schema export
INFO:启动Servlet引擎:ApacheTomcat/6.0.35
1月28日。2013 16:03:01 org.hibernate.annotations.common.Version
信息:HCANN000001:Hibernate Commons注释{4.0.1.Final}
1月28日。2013 16:03:01 org.hibernate.Version日志版本
信息:hh000412:Hibernate核心{4.1.9.Final}
1月28日。2013 16:03:01 org.hibernate.cfg.Environment
信息:HH000206:找不到hibernate.properties
1月28日。2013 16:03:01 org.hibernate.cfg.Environment buildBytecodeProvider
信息:HH000021:字节码提供程序名称:javassist
1月28日。2013 16:03:01 org.hibernate.cfg.Configuration配置
信息:HH000043:从资源配置:/hibernate.cfg.xml
1月28日。2013 16:03:01 org.hibernate.cfg.Configuration getConfigurationInputStream
信息:hh000040:配置资源:/hibernate.cfg.xml
1月28日。2013 16:03:01 org.hibernate.cfg.Configuration doConfigure
信息:HH000041:配置的会话工厂:null
1月28日。2013年16:03:01 org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator实例化ExplicitConnectionProvider
信息:HH000130:实例化显式连接提供程序:org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
1月28日。2013年16:03:01 org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider配置
信息:HH010002:C3P0使用驱动程序:com.mysql.jdbc.driver,URL:jdbc:mysql://localhost:3306/dev
1月28日。2013年16:03:01 org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider配置
信息:hh000046:连接属性:{user=root,password=***,autocommit=true,proof\u property=true,release\u mode=auto}
1月28日。2013年16:03:01 org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider配置
信息:HH000006:自动提交模式:真
1月28日。2013年16:03:01 com.mchange.v2.log.MLog
信息:使用Java1.4+标准日志记录的MLog客户端。
1月28日。2013 16:03:02 com.mchange.v2.c3p0.c3p0注册表横幅
信息:初始化c3p0-0.9.1[构建于2007年1月16日14:46:42;调试?正确;跟踪:10]
1月28日。2013年16:03:02 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager
信息:正在初始化c3p0池。。。com.mchange.v2.c3p0。PoolBackedDataSource@b6868296[connectionPoolDataSource->com.mchange.v2.c3p0。WrapperConnectionPoolDataSource@8d0e5680 [acquireIncrement->1,AcquireEntryAttributes->30,AcquireEntryDisplay->1000,自动提交关闭->false,自动测试表->null,breakAfterAcquireFailure->false,签出超时->0,connectionCustomizerClassName->null,ConnectionTestClassName->com.mchange.v2.c3p0.impl.DefaultConnectionTester,DebuggeunReturnedConnectionsTackTraces->false,factoryClassLocation->null,ForceIgnoreUnsolvedTransactions->false,identityToken->1HGEBY98SZD5HKBS91S5 | a69b6b,idleConnectionTestPeriod->0,initialPoolSize->0,maxAdministrativeTaskTime->0,maxConnectionAge->0,maxIdleTimeExcessConnections->->0,maxPoolSize->32,maxStatements->100,maxStatementsPerConnection->0,minPoolSize->0,nestedDataSource->com.mchange.v2.c3p0。DriverManagerDataSource@d4b5ff9b[description->null,driverClass->null,factoryClassLocation->null,identityToken->1HGEBY98SZD5HKBS91S5 | 75b3ee,jdbcUrl->jdbc:mysql://localhost:3306/dev,物业->{user=*******,password=****,autocommit=true,proof\u property=true,release\u mode=auto}],preferredTestQuery->null,propertycle->0,testConnectionOnCheckin->false,testConnectionOnCheckout->false,unreturnedConnectionTimeout->0,UseStraditionalReflectionProxies->false;userOverrides:{}],dataSourceName->null,factoryClassLocation->null,identityToken->1HGEBY98SZD5HKBS91S5 | 1a9bea3,numHelperThreads->3]
2013年1月28日16:03:02 org.hibernate.dialogue.dialogue
信息:HH000400:使用方言:org.hibernate.dialogue.mysql5innodbdialogue
2013年1月28日16:03:02 org.hibernate.engine.jdbc.internal.LobCreatorBuilder使用上下文AllobCreation
信息:HH000424:当createClob()方法引发错误时禁用上下文LOB创建:java.lang.reflect.InvocationTargetException
2013年1月28日16:03:02 org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
信息:HH000268:事务策略:org.hibernate.engine.Transaction.internal.jdbc.jdbc TransactionFactory
2013年1月28日16:03:02 org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory
信息:HH000397:使用ASTQueryTranslatorFactory
2013年1月28日16:03:02 org.hibernate.tool.hbm2ddl.SchemaExport执行
信息:HH000227:正在运行hbm2ddl架构导出

为什么hibernate会忽略autocommit属性?我们应该关心吗?(我们的测试表明,正确注释的方法中的异常会回滚,所以一切看起来都很好)

我在使用hibernate+MySQL时也遇到了这个问题。我没有将其设置为false但结果为true,而是将其设置为true但结果为false。我看到了您的问题,但没有答案。我想通过以下方式分享我是如何解决这个问题的:

1重新启动数据库服务器

2清洁项目

3重新启动web服务器


我尝试了很多方法,实际上,我不知道为什么这最终奏效了…只是为了共享。

我认为在加载prope时,属性名称应该重命名为
hibernate.connection.autocommit
,而不是
hibernate.cfg.xml
中的
hibernate.autocommit