mysql - 为什么即使我使用 'validate' Hibernate 也总是丢弃数据库中的数据?

标签 mysql sql hibernate validation

我有 Java Spring 项目, 在 application.properties 文件中我有:

spring.jpa.hibernate.ddl-auto=validate
spring.datasource.schema=classpath:/data/hsqldb/schema.sql
spring.datasource....
...

在 data/hsqldb/schema.sql 中我有一个简单的表:

DROP TABLE IF EXISTS ToDoItem;
CREATE TABLE ToDoItem (
  id BIGINT NOT NULL AUTO_INCREMENT,
  title varchar(500) NOT NULL,
  PRIMARY KEY (id)
);

我启动应用程序,在 ToDoItem 表中创建一些数据,但每次我重新启动应用程序时,它都会从该表中删除所有数据。 我希望 Hibernate 只是验证 DB 中的表结构,如果它没问题 - 不要触及数据。

顺便说一句,我试图注释掉 'DROP TABLE IF EXISTS ToDoItem' 行,但在这种情况下我得到了 Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'todoitem' 已经存在

最佳答案

首先,每次您重新启动应用程序时,如果该文件每次都运行,那么它肯定会删除所有数据。

如果存在 ToDoItem,则删除表;

你先删除数据然后再创建它

创建表 ToDoItem (

首先检查表格:

IF (EXISTS (SELECT * 
                 FROM INFORMATION_SCHEMA.TABLES 
                 WHERE TABLE_SCHEMA = 'SchemaName' 
                 AND  TABLE_NAME = 'TableName'))
BEGIN
    --some code
END
ELSE
BEGIN
   -- Create table code
END

如果存在则验证否则创建

关于mysql - 为什么即使我使用 'validate' Hibernate 也总是丢弃数据库中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34852524/

相关文章:

php - 使用 Doctrine 创建一对多的多态关系

MySQL:更多列与更多查询

php - Force Union 以避免得到重复的结果,然后将其删除?

sql - 在 PostgreSQL 上捕获已删除的行

mysql - 首先是特定的 Id

html - Spring中的等效布局(asp.net core)是什么?

php - MySQL 查询从 WordPress 数据库中获取最近的位置 WHERE 经度和纬度保存为后元

mysql - 在 myisam 表上,为什么我的 Select 非常慢,但很少见

java - mysql 设置数据类型列到 java 集映射

java - HTTP 状态 500 - 无法提取结果集 - hibernate