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