Hibernate MySQL Innodb - PullRequest
       4

Hibernate MySQL Innodb

1 голос
/ 23 июня 2010

Я хотел заставить hibernate использовать innodb.

Итак, я изменил «hibernate.dialect», чтобы иметь innodb, но я могу подключиться к mysql, но когда я делаю некоторые транзакции, у меня появляется следующая ошибка:

org.springframework.transaction.TransactionSystemException: Не удалось зафиксировать транзакцию JPA; Вложенное исключение - javax.persistence.RollbackException: транзакция, помеченная как rol lbackOnly в org.springframework.orm.jpa.JpaTransactionManager.doCommit (JpaTransactionManager.java:465) в org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit (AbstractPlatformTransactionManager.java:709) в org.springframework.transaction.support.AbstractPlatformTransactionManager.commit (AbstractPlatformTransactionManager.java:678) в org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning (TransactionAspectSupport.java:321) в org.springframework.transaction.interceptor.TransactionInterceptor.invoke (TransactionInterceptor.java:116) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:171) в org.springframework.aop.framework.JdkDynamicAopProxy.invoke (JdkDynamicAopProxy.java:204) на $ Proxy46.deleteAsset (неизвестный источник)

вот мой файл persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
    <persistence-unit name="name" transaction-type="RESOURCE_LOCAL">         
        <provider>org.hibernate.ejb.HibernatePersistence</provider>      
        <properties>
            <property name="hibernate.archive.autodetection" value="class, hbm"/>
            <property name="hibernate.show_sql" value="false"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>                      
            <property name="hibernate.hbm2ddl.auto" value="update"/>    
            <!--        
            <property name="hibernate.c3p0.min_size" value="5"/>
            <property name="hibernate.c3p0.max_size" value="20"/>
            <property name="hibernate.c3p0.timeout" value="300"/>
            <property name="hibernate.c3p0.max_statements" value="50"/>
            <property name="hibernate.c3p0.idle_test_period" value="3000"/>     
            --> 
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.url" value="jdbc:mysql://xxxxxx"/>
            <property name="hibernate.connection.username" value="xxxxx"/>
            <property name="hibernate.connection.password" value="xxxxxx"/>

            <property name="defaultAutoCommit" value="false"/>

            <!-- Connection auto reconnect after long inactivity -->
            <property name="connection.autoReconnect" value="true"/>
            <property name="connection.autoReconnectForPools" value="true"/>
            <property name="connection.is-connection-validation-required" value="true"/>
        </properties>
    </persistence-unit>         
</persistence>

У вас есть идеи?

Ответы [ 2 ]

3 голосов
/ 23 июня 2010

Использование MySQL5InnoDBDialect просто говорит Hibernate добавить "ENGINE=InnoDB" при генерации DDL во время экспорта схемы, больше ничего.Я не уверен, что существующие таблицы будут изменены, хотя.Поэтому, если у вас есть существующие таблицы с использованием MyISAM, вам, возможно, придется изменить их вручную.

2 голосов
/ 23 июня 2010

Hibernate не имеет никакого отношения к тому, является ли таблица Inno, MyISAM или другим механизмом хранения - это решено на стороне MySQL. В конфигурации сервера есть значения по умолчанию, и вы можете переопределить их при создании таблиц.

Разница не дала бы вам следа - все, что происходит при использовании транзакций в таблице MyISAM, - это отсутствие транзакций. Все удается, но нет изоляции и откатов.

Согласно @shipmaster, ваш след означает, что у вас есть основная проблема, которая, вероятно, не связана с вашим выбором диалекта. Загляните в журналы или прикрепите источники Spring к проекту и проследите их.

...