首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Hibernate未成功创建表,sql语法错误

Hibernate未成功创建表,sql语法错误
EN

Stack Overflow用户
提问于 2017-03-24 18:59:34
回答 1查看 1.7K关注 0票数 2

我试图使用hibernate创建表,但是我得到了sql语法错误,我不知道为什么。

用户

代码语言:javascript
代码运行次数:0
运行
复制
@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;
    }

角色

代码语言:javascript
代码运行次数:0
运行
复制
@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

代码语言:javascript
代码运行次数:0
运行
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-24 22:07:14

这条线路上有一个问题:

代码语言:javascript
代码运行次数:0
运行
复制
@JoinTable(name="user_role", joinColumns = @JoinColumn(name="user_id"),
inverseJoinColumns = @JoinColumn(name="role_id)"))

在你的用户类中。在role_id之后删除')‘。这就是为什么要获得sql语法错误的原因。

而且,您也没有在两个实体中定义“角色”和“用户”。

更改声明:

代码语言:javascript
代码运行次数:0
运行
复制
private Set<Role> roles;
private Set<User> users;

代码语言:javascript
代码运行次数:0
运行
复制
private Set<Role> roles=new HashSet<Role>();
private Set<User> users=new HashSet<User>();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43007246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档