当前位置: 首页 > 知识库问答 >
问题:

Hibernate恩萨斯自定义列名

黄聪
2023-03-14

我正在我的项目中实现Hibernate Envers,对于这个客户端,数据库中的表和列必须遵循特定的名称模式。name模式使用表名来生成列名的一部分,保存修订的表与原始表有不同的名称(当然),因此我需要能够更改Envers生成的表的列名。

如何更改实体试听表的列名称?

  • 我正在使用Hibernate 4.3.11-FINAL
  • 我毫不费力地喊出修订表(REVINFO)名称,也没有列实体的试镜表名称

共有2个答案

解浩渺
2023-03-14

REVINFO是默认RevisionListener的默认表

您需要创建实现RevisionListener和自定义revisionEntity的自定义修订侦听器。

自定义实体侦听器:

public class CustomRevisionEntityListener implements RevisionListener {

@Override
public void newRevision(Object revisionEntity) {
    CustomRevisionEntity revision = (CustomRevisionEntity) revisionEntity;
    revision.setIPAddress("UserIPAddress");
}
}

和自定义实体,您可以使用任何表名和任何字段:

@Entity
@Table(name="anyTableName")
@RevisionEntity(CustomRevisionEntityListener.class)
@Setter
@Getter
@EqualsAndHashCode
public class CustomRevisionEntity implements Serializable {

    @Id
    @GeneratedValue
    @RevisionNumber
    @Column(name = "rev")
    private int id;

    @RevisionTimestamp
    @Column( name = "revtstmp")
    private long timestamp;


    @Column(name = "ipAddress")
    private String IPAddress ; 

}
周和安
2023-03-14

我不认为Envers提供了这个功能(更改列的名称),我希望我错了。

我能想到的两个选项是:

  • 深入了解Envers代码并尝试了解如何自定义数据在审计中的写入方式,我正在考虑列标识部分
  • 改变审计工作的方式,例如寻找一种可以使用触发器的方法
 类似资料:
  • 问题内容: 我正在制作一个读取XML Internet的Android应用程序。此应用程序使用SAX解析XML。这是我的解析部分代码: 问题是发生SAXException。异常消息如下: org.apache.harmony.xml.ExpatParser $ ParseException:在第4行,第42列:格式不正确(无效的令牌) 但是,如果我将相同的代码放在普通的Java SE应用程序中,则

  • 问题内容: 我将Hibernate用作我们的对象关系映射,并为晦涩的数据库使用了自定义方言。 我从该数据库中检索的实体具有一列,因此: 数据库将此列定义为数字,精度为9,小数位数为3。 我可以看到Hibernate生成的用于检索数据的SQL,当我使用数据库查询工具执行相同的查询时,它为GROSS_WEIGHT列返回“ 9.68”。 但是,在由Hibernate检索的Entity中,“ grossW

  • 我使用Hibernate作为我们的对象关系映射,为一个模糊的数据库使用自定义方言。 我从这个数据库检索的实体有一个列,因此: 数据库将此列定义为数字,精度为9,刻度为3。 我可以看到Hibernate生成的检索数据的SQL,当我使用数据库查询工具执行相同的查询时,它会返回GROSS_WEIGHT列的9.68。 但是,在Hibernate检索到的实体中,“GrossWight”字段包含值“10”,其

  • 问题内容: 我的联系人在解析RSS和Atom文件时遇到SAX问题。根据他的说法,好像来自Item元素的文本被截断为撇号或有时是带重音的字符。编码似乎也有问题。 我尝试了SAX,但也进行了一些删节操作,但无法进一步挖掘。如果有人曾经解决过这个问题,我将不胜感激。 这是ContentHandler中使用的代码: 编辑:编码问题可能是由于将信息存储在字节数组中,因为我知道Java在Unicode中工作。

  • 我正在实现一个 JPA-EJB 解决方案,该解决方案使用Hibernate-恩维尔斯来审核更改。使用玛丽亚DB 5.5.49. 我有一个表,它有一个< code>auto_increment字段(这不是PK,只是另一个字段),我是这样定义的: 我还按照mysql的要求为这个字段创建了一个索引和一个惟一的约束。 不知何故,Envers 无法识别此字段,并且不会在试镜表中存储 caseNumber 的

  • 我有一个实体,其类型由enum表示。数据库是Postgres,在那里表示为枚举类型。我使用JPA/Hibernate及其存储库。请注意,我是JPA、Hibernate和Kotlin的新手。 我试图创建自定义,我需要选择类型(枚举)在可能类型列表中的公司。我,但是,遇到各种错误类型铸造在SQL和/或语法的。 Kotlin中数据类