我在一些项目中一直使用 HSQLDialect 作为我的数据库(MySQL,大多数表为 InnoDB)的方言,并且 Hibernate 从未遇到过任何问题。
我在使用 Spring 3.1.0 和 Hibernate 3.6.9 的项目中使用 setMaxResults() 时遇到了 MySQLSyntaxErrorException ,我仍然想知道它是从哪里来的。
我的 XML 配置 servlet:
<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)
有人可以帮我吗?
最佳答案
为避免删除表和数据,请确保将配置中的 Hibernate 切换为 update
:
<prop key="hibernate.hbm2ddl.auto">update</prop>
这将帮助您摆脱数据消失的问题。
切换到 MySQL5InnoDBDialect
不应该造成任何重大问题。我已经在我的每个项目中使用它很长时间了。唯一可能发生的事情是,某些查询在不同的方言下运行可能不完全相同,但您将能够在运行时或测试期间检查它。
关于mysql - HSQLDialect 到 MySQL5InnoDBDialect、Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9227650/