当前位置: 首页 > 知识库问答 >
问题:

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

贝镜
2023-03-14

用户

@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

共有1个答案

卫志泽
2023-03-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>();
 类似资料:
  • 问题内容: 我不断收到CREATE TABLE语法错误,但是看不到错误!是什么导致错误? 我的SQL: 问题答案: 由于您的DDL语句包括,因此您必须使用ADO执行它。我将您的语句加载到字符串变量中,然后从Access 2007中执行该语句,如下所示: 的 工资 字段是小数精度8,尺度2和默认15000。 是Jet 4.0附带的Access SQL功能之一。这些功能不适用于从DAO执行的语句。如果

  • 使用此代码在Mariadb中创建表时 我得到了这个错误。 #1064年的今天,您的SQL语法出现错误;查看与您的MariaDB服务器版本对应的手册,以了解第2行“Grade TINYINT UNSIGNED,Subject VARCHAR(20),yearteached YEAR)”附近使用的正确语法 我不知道语法有什么问题。谢谢你。

  • 尝试使用 HQL 从表中获取记录时出现错误 原因:com . Mysql . JDBC . exceptions . JDBC 4 . MySQL syntaxerrorexception:您的SQL语法有错误;请查阅与您的MySQL服务器版本相对应的手册,了解使用near '的正确语法。userinfo userinfo 0 _ where userinfo 0 _。login_id='musk

  • 我刚开始使用hibernate,总是会遇到这样的错误: 错误:HHH000388:不成功:创建表用户(id bigint not null auto_increment,mail varchar(255),passwort varchar(255),primary key(id))错误:从存储引擎获取错误-1 这是我的映射类:

  • 问题内容: 我在Docker容器中有一个MySQL数据库。入口点执行创建数据库的脚本和创建表的脚本。 除了一张桌子,其他所有东西都工作正常。 记录到控制台的错误是 第150行是后面的开括号 MySQL版本:8.0.3-rc-log 主机操作系统:Debian jessie 我开始考虑并且可能是保留关键字,因此我重命名了表和列,但错误仍然存​​在。 问题答案: @Bill Karwin在第一条评论中