我是使用JPA的新手,我有一个Person Entity类,我想在其中显示一些信息,首先在创建该类时,我将ID设置为
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
生成了一个ID 51,我的老师告诉我将其更改为:
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
所以它只会以1开头,然后每个人加起来。
现在我有一个结构java类,在这里我要为运行该类的每个新实例删除当前数据库,并且我有以下代码:
public static void main(String[] args)
{
HashMap<String, Object> puProperties = new HashMap<>();
puProperties.put("javax.persistence.sql-load-script-source", "Scripts/ClearDB.sql");
Persistence.generateSchema("jpadb", puProperties);
puProperties.remove("javax.persistence.sql-load-script-source");
Persistence.generateSchema("jpadb", puProperties);
}
具有这样的脚本:
drop database jpadb if exists;
create database jpadb;
这是我得到的错误:
Internal Exception:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an
error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'if exists' at line 1
Error Code: 1064
Call: drop database jpadb if exists;
Query: DataModifyQuery(sql="drop database jpadb if exists;")
[EL Warning]: 2018-09-11 16:14:41.361--ServerSession(2045766957)--
Exception [EclipseLink-4002] (Eclipse Persistence Services -
2.7.3.v20180807-4be1041):
org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Can't create database
'jpadb'; database exists
Error Code: 1007
我不知道语法错误指的是什么?
答案 0 :(得分:0)
使用此脚本;
DROP DATABASE IF EXISTS jpadb;
您有一个写为drop database jpadb if exists;
的snytax错误。您的问题实际上是关于关键字的顺序。
要查看更多mysql Drop docs
答案 1 :(得分:0)
将您的放置声明更改为
drop database if exists jpadb;
您的陈述错误的地方,错误消息很清楚,
Call: drop database jpadb if exists;
Query: DataModifyQuery(sql="drop database jpadb if exists;")