Java InvalidDataAccessResourceUsageException:org.hibernate.exception.SQLGrammarException:

Java InvalidDataAccessResourceUsageException:org.hibernate.exception.SQLGrammarException:,java,spring,spring-boot,hibernate,Java,Spring,Spring Boot,Hibernate,我有以下问题,我被困了一段时间: 我得到这个错误: org.springframework.dao.InvalidDataAccessResourceUsageException:无法准备语句;SQL[调用hibernate_序列的下一个值];嵌套异常为org.hibernate.exception.sqlgrammareexception:无法准备语句 我发现有此错误的人之所以会得到它,是因为他们使用保留字作为表名,但我认为这不是我的问题 我的两个模型类如下。我跳过了接球手/二传手和接球手 @

我有以下问题,我被困了一段时间:

我得到这个错误: org.springframework.dao.InvalidDataAccessResourceUsageException:无法准备语句;SQL[调用hibernate_序列的下一个值];嵌套异常为org.hibernate.exception.sqlgrammareexception:无法准备语句

我发现有此错误的人之所以会得到它,是因为他们使用保留字作为表名,但我认为这不是我的问题

我的两个模型类如下。我跳过了接球手/二传手和接球手

@Entity
@Table(name = "GATEWAY_MODEL")
public class GetewayModel implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column(name = "serial_number", nullable = false, length = 12, updatable = true)
    private String serialNumber;
    @Column(name = "name", nullable = false, length = 12, updatable = true)
    private String name;
    @Column(name = "ipFour", nullable = false, length = 12, updatable = true)
    private String ipFour;
    @Column(name = "peripheral_devices", updatable = true)
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "gateway")
    private Set<PeripheralDevicesModel> peripheralDevices = new HashSet<PeripheralDevicesModel>();


@Entity
@Table(name = "PERIPHERAL_DIVICES_MODEL")
public class PeripheralDevicesModel {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column(name = "uID", nullable = false)
    private String uID;
    @Column(name = "vendor", nullable = false)
    private String vendor;
    @Column(name = "date_created", nullable = false)
    private Date dateCreated;
    @Enumerated(EnumType.STRING)
    @Column(name = "status")
    private Status status;
    @JsonIgnore
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "gateway")
    private GetewayModel gateway;
更新: 在生成GenerationType.IDENTITY后,我现在出现以下错误:

Hibernate: 
    select
        getewaymod0_.id as id1_0_1_,
        getewaymod0_.ip_four as ip_four2_0_1_,
        getewaymod0_.name as name3_0_1_,
        getewaymod0_.serial_number as serial_n4_0_1_,
        peripheral1_.gateway as gateway5_1_3_,
        peripheral1_.id as id1_1_3_,
        peripheral1_.id as id1_1_0_,
        peripheral1_.date_created as date_cre2_1_0_,
        peripheral1_.gateway as gateway5_1_0_,
        peripheral1_.uid as uid3_1_0_,
        peripheral1_.vendor as vendor4_1_0_ 
    from
        gateway_model getewaymod0_ 
    left outer join
        peripheral_divices_model peripheral1_ 
            on getewaymod0_.id=peripheral1_.gateway 
    where
        getewaymod0_.id=?
2020-06-26 16:42:04 - SQL Error: 42102, SQLState: 42S02
2020-06-26 16:42:04 - Table "GATEWAY_MODEL" not found; SQL statement:
select getewaymod0_.id as id1_0_1_, getewaymod0_.ip_four as ip_four2_0_1_, getewaymod0_.name as name3_0_1_, getewaymod0_.serial_number as serial_n4_0_1_, peripheral1_.gateway as gateway5_1_3_, peripheral1_.id as id1_1_3_, peripheral1_.id as id1_1_0_, peripheral1_.date_created as date_cre2_1_0_, peripheral1_.gateway as gateway5_1_0_, peripheral1_.uid as uid3_1_0_, peripheral1_.vendor as vendor4_1_0_ from gateway_model getewaymod0_ left outer join peripheral_divices_model peripheral1_ on getewaymod0_.id=peripheral1_.gateway where getewaymod0_.id=? [42102-200]
2020-06-26 16:42:04 - HHH000327: Error performing load command
org.hibernate.exception.SQLGrammarException: could not prepare statement
我改变了两件事(除了代码中的一些语法/打字错误):

  • 添加了
    cascade=CascadeType。所有
    如下:

     @JsonIgnore
     @ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
     @JoinColumn(name = "gateway")
     private GatewayModel gateway;
    
  • 无法添加包含列的
    nullable=false

    setGateway(新的getwaymodel())

    devices.setGateway(网关)


  • 否则,它在
    H2
    上工作正常

    更新:
    要查找的语法/打字错误:

    • @Table(name=“PERIPHERAL\u DIVICES\u MODEL”)
      需要是
      @Table(name=“PERIPHERAL\u DEVICES\u MODEL”)
    • 公共类网关模型
      需要是
      公共类网关模型
    • 专用网关
      需要是
      私有网关模型网关

    HIbernate无法执行“为HIbernate\u序列调用下一个值”。你在使用什么数据库?休眠_序列是否存在?你真的想使用GenerationType.AUTO吗?嗨,我正在使用H2数据库,我已经用application.properties configutarionOK更新了我的代码。我的问题是,为什么要使用GenerationType.auto,这不是特别的原因。只是举个例子,但不明白这是怎么回事?可能我错了。请尝试将其更改为GenerationType.IDENTITY,然后重试。我认为这是问题所在,因为错误显示“HIBERNATE_SEQUENCE”未找到。嗨,我添加了cascade=CascadeType.ALL和remove nullable=false,但我仍然得到相同的错误兄弟,我更新了我的答案。检查你的语法/打字错误。
    Hibernate: 
        select
            getewaymod0_.id as id1_0_1_,
            getewaymod0_.ip_four as ip_four2_0_1_,
            getewaymod0_.name as name3_0_1_,
            getewaymod0_.serial_number as serial_n4_0_1_,
            peripheral1_.gateway as gateway5_1_3_,
            peripheral1_.id as id1_1_3_,
            peripheral1_.id as id1_1_0_,
            peripheral1_.date_created as date_cre2_1_0_,
            peripheral1_.gateway as gateway5_1_0_,
            peripheral1_.uid as uid3_1_0_,
            peripheral1_.vendor as vendor4_1_0_ 
        from
            gateway_model getewaymod0_ 
        left outer join
            peripheral_divices_model peripheral1_ 
                on getewaymod0_.id=peripheral1_.gateway 
        where
            getewaymod0_.id=?
    2020-06-26 16:42:04 - SQL Error: 42102, SQLState: 42S02
    2020-06-26 16:42:04 - Table "GATEWAY_MODEL" not found; SQL statement:
    select getewaymod0_.id as id1_0_1_, getewaymod0_.ip_four as ip_four2_0_1_, getewaymod0_.name as name3_0_1_, getewaymod0_.serial_number as serial_n4_0_1_, peripheral1_.gateway as gateway5_1_3_, peripheral1_.id as id1_1_3_, peripheral1_.id as id1_1_0_, peripheral1_.date_created as date_cre2_1_0_, peripheral1_.gateway as gateway5_1_0_, peripheral1_.uid as uid3_1_0_, peripheral1_.vendor as vendor4_1_0_ from gateway_model getewaymod0_ left outer join peripheral_divices_model peripheral1_ on getewaymod0_.id=peripheral1_.gateway where getewaymod0_.id=? [42102-200]
    2020-06-26 16:42:04 - HHH000327: Error performing load command
    org.hibernate.exception.SQLGrammarException: could not prepare statement
    
     @JsonIgnore
     @ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
     @JoinColumn(name = "gateway")
     private GatewayModel gateway;