java - JPA - 如何在构造函数中获取自动生成的 id?
问题描述
我想要实现的是获取自动生成的 ID,对其进行哈希处理并将其保存到类中的其他字段中,但是在通过构造函数 ID 创建对象的阶段尚未生成。任何解决方法的想法?
@Entity
public class MyClass {
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.AUTO)
Long id;
String hashID;
MyClass(){
this.hashID = Utils.hashID(id);
}
//setters and getters
}
```
解决方案
我能想到的一种方法是您可以使用实体生命周期回调事件,就像@PostLoad
在持久性上下文中加载实体时调用的那样,并从 id 初始化散列字段。
例如
@Entity
public class MyClass {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
Long id;
String hashID;
@PostLoad
public void postLoad() {
// Here id is initialized
this.hashID = Utils.hashID(id);
}
}
推荐阅读
- asp.net - Microsoft Identity AzureAD ASP.NET Core 仅适用于两个租户
- java - 我可以在 Spring Boot 中为我的控制器类使用一些属性文件而不是 Swagger 注释吗
- mysql - 在 MySQL 中应用外键约束时如何处理自动创建的索引?
- django - django - ValueError:依赖于没有迁移的应用程序
- linux - Gitlab 自动部署已停止工作,服务器日志中出现“找不到匹配的主机密钥类型”错误
- python - ValueError:转换 ISO 8601 时时间数据“2021-04-06T23:51:50.514Z”与格式“%Y-%m-%dT%H:%M:%SZ”不匹配
- python - colab 笔记本中的希腊字母
- javascript - Javascript,如果值插入包含在范围内,则动态颜色 HTML 输入框
- ctags - Ctags 命令 (ctr+] ,ctr+t) 不适用于 Vim 编辑器
- mysql - 如何将子查询存储到 laravel 查询中的变量中?