我试图使用hibernate创建表,但是我得到了sql语法错误,我不知道为什么。
用户
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToMany
@JoinTable(name="user_role", joinColumns = @JoinColumn(name="user_id"),
inverseJoinColumns = @JoinColumn(name="role_id)"))
private Set<Role> roles;
}
角色
@Entity
@Table(name="role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
@ManyToMany(mappedBy="roles")
private Set<User> users;
}
application.properties
spring.datasource.url = jdbc:mysql://localhost/basket
spring.datasource.username = root
spring.datasource.password =
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = create
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
org.hibernate.tool.hbm2ddl.SchemaUpdate : HHH000388:不成功:创建表user_role (user_id bigint not null,role_id) org.hibernate.tool.hbm2ddl.SchemaUpdate :您的SQL语法出现了错误;请检查与MariaDB服务器版本相对应的手册,以便在第1行使用正确的语法,使用“) bigint null,主键(user_id,role_id)”。 org.hibernate.tool.hbm2ddl.SchemaUpdate : HHH000388:不成功: alter user_role添加约束FK_75dvukqj0muwehqn7y8qi9j5c外键(Role_id)引用角色(id) org.hibernate.tool.hbm2ddl.SchemaUpdate :您的SQL语法出现了错误;请检查与MariaDB服务器版本相对应的手册,以便在第1行中正确使用near ') references role (Id)。 org.hibernate.tool.hbm2ddl.SchemaUpdate : HHH000388:不成功: alter user_role添加约束FK_apcc8lxk2xnug8377fatvbn04外键(user_id)引用用户(id) org.hibernate.tool.hbm2ddl.SchemaUpdate :表'basket.user_role‘不存在
我正在使用MariaDB 10.1.16。
发布于 2017-03-24 14:07:14
这条线路上有一个问题:
@JoinTable(name="user_role", joinColumns = @JoinColumn(name="user_id"),
inverseJoinColumns = @JoinColumn(name="role_id)"))
在你的用户类中。在role_id之后删除')‘。这就是为什么要获得sql语法错误的原因。
而且,您也没有在两个实体中定义“角色”和“用户”。
更改声明:
private Set<Role> roles;
private Set<User> users;
至
private Set<Role> roles=new HashSet<Role>();
private Set<User> users=new HashSet<User>();
https://stackoverflow.com/questions/43007246
复制相似问题