【问题标题】:How to change the table name in the query with spring hibernate如何使用spring hibernate更改查询中的表名
【发布时间】:2021-10-27 01:53:05
【问题描述】:

我将这个实体命名为“用户”

@Entity
public class User {

    private @Id @GeneratedValue Long id;

    @Column(unique=true)
    private String username;

    private String password;

但后来我在下面看到了这个错误消息,发现“USER”是 postgresql 中的保留关键字

错误:字符 14 处的“用户”处或附近出现语法错误

声明:创建表用户(id int8 not null .....

然后我尝试使用表格注释重命名表格

@Entity
@Table(name="USER_ACCOUNT")
public class User {

    private @Id @GeneratedValue Long id;

    @Column(unique=true)
    private String username;

    private String password;

但问题依然存在,请问如何解决?我需要更改班级名称吗?

编辑: 附加信息,我使用 docker compose 运行所有 spring boot 和 postgres 服务。 我首先使用 H2,它毫无问题地创建了用户表。

【问题讨论】:

  • 你在postgresql控制台中直接试过语句了吗?
  • 你的表在数据库中的名称是什么?
  • 是“更新”,而不是“创建”行: of config file 'persistence.xml' ?
  • @AndrzejWięcławski 我使用 create-drop

标签: java postgresql spring-boot hibernate spring-data-jpa


【解决方案1】:

关键字“USER”在postgresql中被保留, 我通过像这样更改@Table 中的名称解决了这个问题:

@Table(name="\"User\"")

【讨论】:

    【解决方案2】:

    我的错

    我还没有将应用重新打包到新的 jar 文件中

    这就是为什么 docker 还在构建旧的 jar 文件的原因

    【讨论】:

    • 您可以将此答案发布到您问题的评论部分。
    • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
    【解决方案3】:

    我认为,您需要删除表用户,或者您将其重命名为用户。

    【讨论】:

    • db是由hibernate初始化的,所以一开始就没有用户表
    • 检查 spring.jpa.hibernate.ddl-auto 属性到 application.properties
    【解决方案4】:

    为了在 postgres 中创建一个名为 user 的表,我们将实体定义如下

    @Table(name = "\"user\"")

    我不确定为什么您无法在上面的示例中将名称更改为 USER_ACCOUNT,因为语法看起来是正确的。这可能是比创建一个名为user 的表更好的解决方案。

    【讨论】:

      猜你喜欢
      • 2019-12-15
      • 1970-01-01
      • 2018-10-02
      • 2014-02-04
      • 2022-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多