【问题标题】:Envers + Spring JPA: revinfo does not allow 'user' columnEnvers + Spring JPA:revinfo 不允许“用户”列
【发布时间】:2021-06-16 10:42:11
【问题描述】:

我设置了 Spring JPA + Envers (PostgreSQL) 并用 @Audited 注释了一些实体类。我添加了我的 revinfo 表,因为我想记录更改来自的帐户:

@Entity(name = "Audit")
@Table(name = "revinfo")
@RevisionEntity(AuditRevisionListener::class)
class AuditRevisionEntity(

    @Id
    @GeneratedValue
    @RevisionNumber
    var rev : Int = 0,

    @RevisionTimestamp
    var timestamp: Long = 0,

    var username: String      <<< CULPRIT
)

上面的代码被剪断了!但是 - 当我将 username 重命名为 user 时,一切都崩溃了。我收到一条神秘消息

错误:字符 33 处的“用户”处或附近出现语法错误
声明:插入 revinfo(时间戳、用户、rev)值($1、$2、$3)

我的第一个假设是我的类型不匹配,所以我根据我的 liquibase 设置进行了验证

<changeSet id="create-revinfo-table" author="me">
    <createTable tableName="revinfo">
        <column name="rev" type="SERIAL" autoIncrement="true">
            <constraints primaryKey="true" primaryKeyName="revinfo_pkey"/>
        </column>
        <column name="timestamp" type="bigint"/>
        <column name="username" type="VARCHAR(255)"/>
    </createTable>
</changeSet>

当我将 username 重命名为 user 时,它再次崩溃并出现上述错误消息。

为什么我不能在revinfo 中使用名为user 的列?
还有这些神奇的列名吗?
我在哪里可以找到有关此行为的信息?

【问题讨论】:

    标签: postgresql hibernate hibernate-envers spring-data-envers


    【解决方案1】:

    userspecial keyword in PostgreSQL

    我会选择一个不同的名字,但如果你觉得它很强大 you can quote the name@Column

    @Column(name = "`user`")
    var username: String
    

    【讨论】:

    • 这就是我的预期。感谢您的帮助,并感谢您的链接。高度赞赏
    猜你喜欢
    • 1970-01-01
    • 2019-03-10
    • 2015-02-15
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    相关资源
    最近更新 更多