使用Hibernate和Springboot来运行Flyway

时间:2019-01-07 20:31:36

标签: hibernate spring-boot

我试图建立一个小型的springboot应用程序,我想在其中使用flyway进行数据迁移,并使用hibernate在运行时处理实体。我正在使用Postgre SQL数据库。

我已经启动应用程序并使用flyway运行并创建了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

我已经需要很多时间,并且遇到许多不同的错误,但是我觉得这是我最接近关键问题的地方。

谢谢你们的帮助!

0 个答案:

没有答案