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。这不是 正如您在配置中看到的,我正在使用磁盘空间 db。 【参考方案1】:

正如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

spring boot 中Spring data jpa数据库表字段命名策略

JPA/Hibernate 和复合键