Hibernate добавляет ненужный столбец в таблицу, которая не сопоставлена ​​или не определена - PullRequest
0 голосов
/ 27 февраля 2019

Я настроил Spring-Boot для использования Hibernate для загрузки данных из встроенной базы данных H2.Схема в этой базе данных будет автоматически сгенерирована с помощью скрипта schema.sql, а затем будет заполнена данными из файла data.sql.

Содержимое моего schema.sql:

CREATE TABLE BusinessModel (
ID INTEGER PRIMARY KEY,
NAME VARCHAR(256) NOT NULL,
DESCRIPTION VARCHAR(1024),
IMAGEURL VARCHAR(128)
);

Проблема в том, что hibernate автоматически добавляет в таблицу дополнительный столбец, который не определен в schema.sql.В журнале приложения я могу найти эту строку:

Hibernate: alter table APP.PUBLIC.BUSINESSMODEL add column image_url varchar(255)

Таким образом, столбец image_url автоматически добавляется.В консоли H2 я вижу таблицу и ее содержимое.Там все столбцы из schema.sql добавлены и заполнены правильными данными.Кроме того, столбец image_url добавлен и остается пустым.Внутри моей сущности столбец imageurl отображается следующим образом:

@Column(name = "imageurl")
public String getImageUrl() {
    return imageUrl;
}

Теперь моя проблема в том, что Hibernate ссылается и загружает данные из image_url, что неверно.До сих пор я не мог найти файл, в котором определен image_url.Есть ли какой-то тип кеша, который нужно очистить?Я перезапускал приложение несколько раз, удалял таблицу и изменил spring.jpa.hibernate.ddl-auto с none на create-drop обратно на none.

UPDATE 1 Полный класс BusinessModel:

@Entity

@ Table (name = "businessmodel") открытый класс BusinessModel реализует Serializable {

private static final long serialVersionUID = -3152463846487623463L;

@Id
private int id;

private String name, description, imageUrl;

public BusinessModel() {

}

@Column(name = "id", unique = true, nullable = false)
public int getID() {
    return id;
}

public void setID(int id) {
    this.id = id;
}

@Column(name = "name")
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

@Column(name = "description")
public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

@Column(name = "imageurl")
public String getImageUrl() {
    return imageUrl;
}

public void setImageUrl(String imageUrl) {
    this.imageUrl = imageUrl;
}

}

Я использую Spring-Boot 2.1.2.REALESE и, следовательно, интегрированную версию Hibernate,Похоже на Hibernate Версия 5.3

ОБНОВЛЕНИЕ 2 application.properties

# Hibernate
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.H2Dialect
spring.jpa.show_sql=true
spring.datasource.initialize=true
spring.jpa.generate-ddl=true

# Database
spring.datasource.url=jdbc:h2:mem:app;create=true

# Enabling H2 Console
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...