Java 由于语法错误,未在数据库中创建表

Java 由于语法错误,未在数据库中创建表,java,mysql,sql,hibernate,jpa,Java,Mysql,Sql,Hibernate,Jpa,/*HH000388:不成功:创建表USER\u REGISTRATION\u DB(USER-NO integer not null,ADDRESS varchar(60),AGE varchar(255),DATE\u出生日期time not null,EMAIL varchar(40),FIRST\u NAME varchar(30),LAST\u NAME varchar(255),MOBILE varchar(255)not null,PASSWORD varchar(30),USER

/*HH000388:不成功:创建表USER\u REGISTRATION\u DB(USER-NO integer not null,ADDRESS varchar(60),AGE varchar(255),DATE\u出生日期time not null,EMAIL varchar(40),FIRST\u NAME varchar(30),LAST\u NAME varchar(255),MOBILE varchar(255)not null,PASSWORD varchar(30),USERNAME varchar(40),UUID varchar(5)not null,V\u ID varchar(255),主键(用户编号))


在列名中使用连字符似乎是Hibernate的一个已知问题

在JPA 1.0中,解决方法是使用反勾号转义列名:

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 '-NO integer not null, ADDRESS varchar(60), AGE varchar(255), DATE_OF_BIRTH datet' at line 1   */    
在JPA2.0和更高版本中,您可以简单地在列名周围加引号,例如

// this is for primary key
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "`USER-NO`")
private int userno;
参考资料:


一般规则:如果你能回答这个问题,就不要使用这样的名字。
// this is for primary key
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "`USER-NO`")
private int userno;
@Column(name = "\"USER-NO\"")