HSQLDialect to MySQL5InnoDBDialect, Hibernate - PullRequest
2 голосов
/ 10 февраля 2012

Я использовал HSQLDialect в качестве диалекта для своей базы данных (MySQL, большинство таблиц в виде InnoDB) в некоторых проектах, и у меня никогда не было проблем с Hibernate.

Я обнаружил MySQLSyntaxErrorException при использовании setMaxResults () в проекте, использующем Spring 3.1.0 и Hibernate 3.6.9, и я все еще задаюсь вопросом, откуда это происходит ..

Мой сервлет конфигурации XML:

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
    <property name="url" value="jdbc:mysql://localhost:3306/product" />
    <property name="username" value="root" />
    <property name="password" value="***************" />
</bean>

<bean id="mySessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="myDataSource" />
        <property name="mappingResources">
            <list>
                <value>com/social/admin/beans/DevDebugLogs.hbm.xml</value>
                <value>com/social/admin/beans/Users.hbm.xml</value>
                ...
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect"> org.hibernate.dialect.HSQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
            </props>
        </property>
    </bean>

    <bean name="/logs.html" class="com.social.admin.controllers.DebugManagerAdmin"> 
        <property name="sessionFactory" ref="mySessionFactory" /> 
    </bean> 

Я попытался переключиться с HSQLDialect на MySQL5InnoDBDialect, и он уничтожил большую часть моей базы данных, удалив записи, удалив таблицы .... !!!!!!! X)

Может ли кто-нибудь мне помочь?

1 Ответ

2 голосов
/ 13 февраля 2012

Чтобы избежать удаления таблиц и данных, убедитесь, что вы переключили Hibernate в своей конфигурации на update: <prop key="hibernate.hbm2ddl.auto">update</prop>

Это поможет вам избавиться от проблем с исчезновением данных.

Переключение на MySQL5InnoDBDialect не должно вызывать серьезных проблем.Я очень долго использовал его в каждом своем проекте.Единственное, что может произойти, это тот факт, что некоторые запросы могут не выполняться одинаково на разных диалектах, но вы сможете проверить это во время выполнения или во время тестов.

...