JPA + Hibernate,避免丢表
Posted
技术标签:
【中文标题】JPA + Hibernate,避免丢表【英文标题】:JPA + Hibernate, avoid drop table 【发布时间】:2014-11-13 15:37:14 【问题描述】:我正在使用 JavaSE + JPA + Hibernate + HSQLDB。
我的持久化xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="persistence" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>sk.tokra.jpa.model.TestDB</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:C:\Dev\db\hsqldb_db" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.hbm2ddl.auto" value="create"/>
</properties>
</persistence-unit>
</persistence>
我创建表,将对象放在那里,按 id 查找对象返回我的 obj [ok],我停止应用程序 - 下一个读取启动应用程序,当我按 id 查找时获取我的空对象(表为空)。
我认为:
<property name="hibernate.hbm2ddl.auto" value="create"/>
不会放下我的桌子,
有什么想法吗?
【问题讨论】:
我不确定,但似乎您正在以内存方式使用 HSQLDB。这不是正如this answer 中所述,值create
将创建架构,破坏以前的数据。如果您想保留数据,请尝试使用 update
。
【讨论】:
【参考方案2】:“create”不会删除您的表,它会创建架构并删除您的数据。
【讨论】:
以上是关于JPA + Hibernate,避免丢表的主要内容,如果未能解决你的问题,请参考以下文章
spring-data-jpa :找到对集合 org.hibernate.HibernateException 的共享引用
JPA/Spring/Hibernate/etc 中是不是有类似于 JPA 的 @PrePersist 允许更改相关实体的功能?
无法在 FROM 子句中使用子查询编写 JPQL 查询 - Spring Data Jpa - Hibernate
无法在 FROM 子句中使用子查询编写 JPQL 查询 - Spring Data Jpa - Hibernate