Hibernate mysql innodb
我想强迫hibernate使用innodb。
所以,我改变了“hibernate.dialect”以便拥有innodb,但我可以连接到mysql,但是当我做一些事务时,我有以下错误:
org.springframework.transaction.TransactionSystemException:无法提交JPA事务; 嵌套exception是javax.persistence.RollbackException:org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:465)org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java)中标记为rol lbackOnly的事务: 709)在org.springframework.transaction.intercts.TransactionInterceptor的org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)的org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:678)位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)的.invoke(TransactionInterceptor.java:116)org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)at $ Proxy46 .deleteAsset(未知来源)
这是我的persistence.xml:
org.hibernate.ejb.HibernatePersistence <!-- -->
你有什么主意吗 ?
Hibernate没有说明表是Inno,MyISAM还是其他存储引擎 – 这是在MySQL方面决定的。 服务器配置中有默认值,您可以在创建表时覆盖它们。
差异不会给你跟踪 – 当你在MyISAM表上使用事务时发生的一切,你没有得到任何交易。 一切都成功,但没有隔离,没有回滚。
根据@shipmaster,您的跟踪意味着您有潜在的问题,这可能与您的方言选择无关。 查看日志,或将Spring的源附加到项目中并跟踪它们。
使用MySQL5InnoDBDialect
只是告诉Hibernate在模式导出期间生成DDL时添加"ENGINE=InnoDB"
,仅此而已。 我不确定现有的表格会被改变。 因此,如果您使用MyISAM存在现有表,则可能必须手动更改它们。
- Hibernate自定义架构创建
- 如何使用Hibernate / JPA注释覆盖GenerationType策略?
- 除非访问集合,否则Hibernate OneToMany FetchType.LAZY无法正常工作?
- 如何在hibernate中启用批量插入?
- Hibernate MSSQL datetime2映射
- Hibernate(JPA)如何做一个急切的查询,加载所有子对象
- Tomcat-Spring-Hibernate Web应用程序中的“PermGen out of space”exception可以做些什么?
- JPA / Hibernate静态元模型属性未填充 – NullPointerException
- 应用程序在eclipse中运行得更快