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

由:java.sql.sqlsyntaxerrorexception:[…]版本导致,在第1行“order(id)”附近使用正确的语法

江天宇
2023-03-14
spring.jpa.hibernate.ddl-auto=update

org.hibernate.tool.schema.spi.CommandAcceptanceException:通过JDBC语句执行DDL“CREATE table order(id bigint not null auto_increment,order_date date,user_id bigint,primary key(id))Engine=MYISAM”时出错

由:java.SQL.sqlsyntaxerrorexception引起:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本相对应的手册,以便在第1行“order(id)”附近使用正确的语法

我的映射如下所示:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@MappedSuperclass
public abstract class BaseEntity {

    @Id
    @GeneratedValue(
            strategy = GenerationType.IDENTITY
    )
    private Long id;
}


@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "Order")
@Table(name = "order")
public class Order extends BaseEntity {

    private LocalDate orderDate;

    @OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
    private List<OrderedTicket> orderedTickets = new ArrayList<>();

    private Long userId;

}


@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "OrderedTicket")
@Table(name = "ordered_ticket")
public class OrderedTicket extends BaseEntity {

    private Integer amount;

    @OneToOne
    @JoinColumn(name="ticket_id")
    private Ticket ticket;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "order_id")
    private Order order;

}


@Getter
@Setter
@NoArgsConstructor
@Entity(name = "Ticket")
@Table(name = "ticket")
public class Ticket extends BaseEntity {

    @Enumerated(value = EnumType.STRING)
    private TicketType type;
    private Integer price;
    private Integer totalAmmount;
    private Integer inStock;

    @ManyToOne(cascade = {
            CascadeType.DETACH,
            CascadeType.MERGE,
            CascadeType.PERSIST,
            CascadeType.REFRESH
    })
    @JoinColumn(name = "event_id")
    Event event;

    @Builder
    public Ticket(TicketType type, Integer price, Integer totalAmmount, Integer inStock, Event event) {
        this.type = type;
        this.price = price;
        this.totalAmmount = totalAmmount;
        this.inStock = inStock;
        this.event = event;
    }

}

共有1个答案

公羊雅达
2023-03-14

您不应该将表命名为ORDER,因为ORDER是一个保留的SQL关键字。

你可以这样做,但你总是必须在引号中附上订单。

请查看MySQL手册中所有保留的关键字:

 类似资料:
  • 语法中有错误;查看与服务器版本相对应的手册,以了解第1行附近使用的正确语法 当我试图为我的帐单应用程序生成帐单时,上面的错误将会出现。下面是我的应用程序的代码。请给我一些解决这个错误的方法..................

  • 当我导入数据库时,我在PHPMyadmin中遇到了一些问题。 您的SQL语法有错误;检查与您的MySQL server版本相对应的手册,以了解在第3行“”附近使用的正确语法(`form_id`varchar(18)COLLATE utf8_general_ci;NOT NULL DEFAULT“,) 有人知道我该怎么解决吗?

  • 问题内容: 我有一个Java代码: 然后我有SQLException: 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在’?’附近使用正确的语法。 问题答案: 您应该执行不带任何参数的,如下所示: 使用参数调用将按原样执行提供的查询(没有绑定参数)。

  • 问题内容: 我已经浏览了其他几个此类问题,但没有找到一个可以帮助我解决此问题的问题。我想做的是:我想为所有员工创建一个表,以分配将在其他多个表中使用的表。那张桌子和其他桌子工作正常。当我尝试基于该表创建新表时,就会出现我的问题,这样我就可以仅基于特定类型的员工来调出信息。在所有三个表的语句上,我得到此错误: ‘(’附近的语法不正确。期望的ID。 我一直在搜索如何解决它,但是我没有尝试过。我想念什么

  • 问题内容: 我正在尝试从临时表中查询,但我不断收到此消息: 有人可以告诉我问题是什么吗?是要转换吗? 查询是 问题答案: 对于OP的命令: 我收到此错误: 当调试类似这样的东西时,请排长队,这样您将获得更好的行号: 现在导致: 这可能只是来自OP而不是将整个命令放在问题中,或者使用[]大括号来表示表名: 如果那是表名。