Я пытаюсь настроить небольшое приложение Springboot, где я хотел бы использовать flyway для переноса данных и hibernate для обработки сущностей во время выполнения. Я использую базу данных Postgre SQL.
Я уже запустил приложение и запустил его, создавая таблицы SQL. Репозитории, созданные Springboot, работают в случае отсутствия данных в базе данных, но если я хочу создать данные или попытаться получить данные из базы данных (которые я вставил напрямую), я получаю сообщение об ошибке:
org.postgresql.util.PSQLException: ERROR: column event0_.category does not exist
Hint: Perhaps you meant to reference the column "event0_.category_id".
Ошибка появляется в столбце, который содержит внешний ключ, определение таблиц sql:
CREATE TABLE fin_categories (id BIGINT NOT NULL, name VARCHAR(255) NOT NULL, parent_category BIGINT, PRIMARY KEY (id));
CREATE TABLE fin_events (id BIGINT NOT NULL, name VARCHAR(255) NOT NULL, amount INTEGER, currency VARCHAR(10), category_id BIGINT, PRIMARY KEY (id), FOREIGN KEY(category_id) REFERENCES fin_categories (id));
Сущности (сокращены до соответствующих):
@Entity
@Table(name = "fin_events")
public class Event implements Serializable {
private static final long serialVersionUID = 6768956341367037388L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private long id;
@OneToOne(optional = true)
@JoinColumn(name = "category_id")
private Category category;
}
@Entity
@Table(name = "fin_categories")
public class Category implements Serializable {
private static final long serialVersionUID = 450309297916394998L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
}
Я не уверен, что файл свойств приложения уместен, поэтому просто чтобы убедиться:
spring.datasource.jdbcUrl=jdbc:postgresql://192.168.99.100:5432/finances
spring.datasource.username= admin
spring.datasource.password= bLCMXF7T6dxP2EFK
spring.datasource.initialization-mode= always
spring.datasource.database-platform = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false
spring.jpa.hibernate.ddl-auto = validate
Мне уже требовалось много времени и я получал много разных ошибок, но я чувствую, что это самое близкое к ключевой проблеме.
Спасибо, ребята, за помощь!