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

与Kotlin一起进行JPA审计

杜俊风
2023-03-14

我想在kotlin数据类中使用@CreatedDate注释。所有属性都应初始化为不可变(val)。问题是,实现无法处理不可变变量。不会设置正确的日期,且变量为空。通过可变变量,实现可以设置日期。

示例:

    @Entity
    @EntityListeners(AuditingEntityListener::class)
    data class Test(

    @Id
    @GeneratedValue(generator = "UUID")
    @GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
    @Column(name = "id", updatable = false, nullable = false)
    val id: UUID? = null,

    val text: String,
    @CreatedDate
    @Column(updatable = false, nullable = false)
    var createdAt: LocalDateTime?,
    ...

kotlin编译器是否有专门的插件来解决这个问题,或者在同一个数据类中使用val和var可以吗?

共有1个答案

阎辰钊
2023-03-14

使用val和var是完全可以接受的。

想象一个示例,您只想在实例化对象时能够设置属性,但您不希望用户以后能够更改这些属性。

这就像在构造函数中允许赋值,然后只为该属性提供getter方法。

如果您显示实际的字节码(将kotlin转换为java等效项),您将完全看到这一点。您的val属性没有setter方法。

Intellij的说明:

Display bytecode: Tools -> Kotlin -> Show Kotlin Bytecode
Or just: cmd + shift + A (Mac) / ctrl + shift + A (Windows) and type “Kotlin Bytecode”
 类似资料:
  • 我有一个带有spring Boot(v2.3.3)和spring数据的spring web应用程序。我的评估表包含以下列: Id 我的用例是表中名称和地址的任何更改评估应该创建一个新行,版本以相同的id递增。 因此,基本上只有当地址或姓名更新时,才能在评估表中插入新记录。下面是一个示例: 现有记录: 例如,名称已更新为Ryan,应该有两行,如下所示: 因此,基本上,任何名称和地址的变化都应在评估表

  • 问题内容: 我正在为项目使用Spring Data JPA和Spring Boot。 我对对象(创建/更新/删除)有审计要求。我可能还需要获取特定对象的审核修订。我已经在网上检查过Spring Data Envers无法获得修订并且不跟踪删除? 所以我的问题是: 1)我们可以将Hibernate Envers与Spring数据JPA集成吗? 2)我们有本机查询,HQL和Spring数据JPA更新/

  • 问题内容: 我是Spring的新手。 我们正在使用Spring Security功能。数据库连接:JPA的eclipselink实现。数据库:MySql 使用spring security时,身份验证提供程序的配置如下- 但是在JPA中,我们没有定义数据源,我们将Persistence unit与provider一起使用 那么,我们如何配置身份验证提供程序,以便将JPA用于数据库连接? 数据源引用

  • 我想使用Spring Data自动实体审计(Spring提供:@EnableJpaAudting、AuditingEntityListener、@CreatedBy、@CreatedDate、@LastModifiedBy、@LastModifiedDate),并让这些注释注释的字段成为@Embed类的一部分,我可以将其用作我想要审计的实体中的字段。这是一个示例-我只显示了相关的代码,它编译并运行

  • 问题内容: 我有一个Web服务,可处理向DB中插入/更新的数据。当客户端调用此Web服务时, UserId (当前登录到门户的用户)将在Request中发送。我需要将此userId传递给Db连接,或者在 sys上下文 中将其设置为 Audit目的 。我们已经有现有的审计表和触发器,可以在对实际表进行插入/更新后对审计表进行插入/更新。因此,为了跟踪这些更改,我需要以某种方式将此UserId传递给

  • 我随时都有一个“用户”表,如果插入、更新或删除了一行,那么我需要在“用户审核”表中插入一行,其中包含所有用户数据和操作列,以记录执行的操作。 我用的是Spring批处理,Spring数据JPA把数据插入用户表 我如何使用SpringDataJPA在SpringBatch中实现这一点,或者JPA/hibernate是否提供了任何实现?