Spring JPA Hibernate не в состоянии автоматически генерировать Id H2 таблицу - PullRequest
0 голосов
/ 15 апреля 2020

Я получаю исключение при попытке создать таблицу с автоматически сгенерированным идентификатором:

org.hibernate.tool.schema.spi.CommandAcceptanceException: «Ошибка выполнения DDL» создать место в таблице (id bigint not null, описание varchar (255), num integer not null, десятичная цена (19,2), строка char (255) не null, первичный ключ (id)) "через оператор JDB C".

Похоже, сгенерированная SQL не распознает аннотацию @GeneratedValue (стратегии = GenerationType.TABLE). Похоже, что это очень распространенная проблема с Hibernate или адаптером.

Теперь, перед тем как отбросить этот вопрос как дубликат, я прошел все вопросы и ответы с похожей проблемой и попробовал все предложенные там решения. Я также попытался сгенерировать Id-ключи самостоятельно и попытался установить spring.jpa.properties.hibernate.hbm2ddl.auto на «delete-create»

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) ))
            }
        }
    }

То, что я пробовал: - стратегию = 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

...