Я настроил 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