尝试使用自动生成的ID创建表时出现异常:
org.hibernate.tool.schema.spi.CommandAcceptanceException:“执行DDL时出错”创建表位置(id bigint不为null,说明varchar(255),num整数不为null,价格为小数(19,2),行char (255)不为空,主键(id))“通过JDBC语句”。
看起来生成的SQL无法识别'@GeneratedValue(strategy = GenerationType.TABLE)'注释。对于Hibernate或Adaptor来说,这似乎是一个非常普遍的问题。
现在,在您将此问题重复删除之前,我已经对所有q / a进行了类似的处理,并尝试了所有建议的解决方案。我还尝试自己生成ID密钥,并尝试将spring.jpa.properties.hibernate.hbm2ddl.auto设置为“删除创建”
application.properties
spring.datasource.driverClassName = org.h2.Driver
spring.datasource.username = sa
spring.datasource.password =
spring.jpa.properties.hibernate.hbm2ddl.auto=update
实体类
import java.math.BigDecimal
import javax.persistence.*
@Entity
data class Seat(
@Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id")
val id: Long,
val row: Char,
val num: Int,
val price: BigDecimal,
val description: String) {
override fun toString(): String = "Seat $row-$num $$price ($description)"
}
服务构造器
constructor() {
...
for (row in 1..15) {
for (num in 1..36) {
hiddenSeats.add(Seat(0, (row+64).toChar(), num, getPrice(row,num), getDescription(row,num) ))
}
}
}
我尝试过的事情: -strategy = GenerationType.AUTO更改为.SEQUENCE和.TABLE -将此添加到application.properties:
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.H2Dialect
我尝试自己生成ID,但未成功。我一定是新手Kotlin,Spring Boot和Hibernate的用户,但是在这里碰壁了。请指教!
jdk-14,Spring Boot v2.2.6.RELEASE, 使用方言:org.hibernate.dialect.H2Dialect
答案 0 :(得分:3)
这是问题.trueHeading
,ROW是SQL中的保留字。更改该变量