如何解决Envers + Spring JPA:revinfo 不允许“用户”列
我设置了 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 处“user”处或附近的语法错误
声明:插入 revinfo (timestamp,user,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
时,它再次崩溃并显示上述错误消息。
为什么我不能在 user
中使用名为 revinfo
的列?
还有这些神奇的列名吗?
在哪里可以找到有关此行为的信息?
解决方法
user
是一个 special keyword in PostgreSQL。
我会选择一个不同的名字,但如果你对它有强烈的感觉you can quote the name和@Column
:
@Column(name = "`user`")
var username: String
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。