微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Heroku 上使用 PostgreSQL 休眠,创建表时出错

如何解决在 Heroku 上使用 PostgreSQL 休眠,创建表时出错

我在构建使用 Hibernate 和 Postgresql 的 Javalin 应用程序时遇到此错误。 所有其他表都在正常创建,但是这个表给了我这个错误,我不知道为什么。我见过这个错误,但是当使用“user”作为表名时会发生这种情况,可能是 sale 是内部表的 postgre 保留名称

2021-06-24T18:43:16.449969+00:00 app[web.1]: Jun 24,2021 6:43:16 PM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException
2021-06-24T18:43:16.449977+00:00 app[web.1]: WARN: GenerationTarget encountered exception accepting command : Error executing DDL "create table sale (id  serial not null,date date,user varchar(255),primary key (id))" via JDBC Statement
2021-06-24T18:43:16.449978+00:00 app[web.1]: org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table sale (id  serial not null,primary key (id))" via JDBC Statement

sale类的hibernate注解是这样的:

@Entity
public class Sale implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column()
    private String user;
    @OnetoMany(mappedBy = "sale")
    private Set<SoldProduct> products = new HashSet<>();
    @Column()
    private LocalDate date;

    public Sale(){
        this.date = LocalDate.Now();
    }

    public Sale(String user,Set<SoldProduct> products){
        this.user = user;
        this.products = products;
        this.date = LocalDate.Now();
    }

    public int getId() {
        return id;
    }

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

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public Set<SoldProduct> getProducts() {
        return products;
    }

    public void setProducts(Set<SoldProduct> products) {
        this.products = products;
    }

    public void addProduct(SoldProduct product){
        products.add(product);
    }

    public LocalDate getDate() {
        return date;
    }

    public void setDate(LocalDate date) {
        this.date = date;
    }
} 

我在 Heroku Postgresql 上使用 java 11,hibernate 5.5.3 和 Postgresql95Dialect

解决方法

user 列是 postgres 中的保留字。尝试将其更改为其他内容。

示例:

@Column(name = "account_user")
private String user;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。