postgresql - 在 Heroku 上使用 PostgreSQL 休眠创建表时出错
问题描述
构建使用 Hibernate 和 PostgreSQL 的 Javalin 应用程序时出现此错误。所有其他表都在正常创建,但是这个给了我这个错误,我不知道为什么。我已经看到了这个错误,但是当使用“用户”作为表名时会发生这种情况,可能会出售是内部表的 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, date date, user varchar(255), primary key (id))" via JDBC Statement
销售类休眠注释是这样的:
@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;
推荐阅读
- r - 提取具有连通值和受限方向的子矩阵
- python - 尝试在 Django 中更新记录时出现递归错误
- mysql - SQL:给出收入高于经理的员工的姓名
- ios - 如何在 Swift 4 中将比特币从一个钱包发送到另一个钱包
- react-native - 在带有 React-native-firebase 的 iOS 上没有推送通知。尝试从控制台发送时,团队 ID 密钥 ID 和 APNs 身份验证组合键无效
- javascript - 删除后的数据表导出值
- javascript - 无法加载“用户名:密码 http:// 链接:跨源请求仅支持协议方案 http、数据、chrome、chrome-extension
- javascript - 如何获取字符串中的数字数量?
- vue.js - HTTP 服务器 'localhost:8080' 位于何处?
- ubuntu - 从第三台机器访问 SSH 隧道