Jul*_*anG 5 java database oracle jpa
是否可以根据使用的数据库使用 JPA 定义不同的列类型?
我需要将 id 存储为 uuid 并且它必须是可移植的。那就是问题所在。PostgreSQL有“uuid”,MSSQL有“uniqueidentifier”,而Oracle什么都没有,我想必须使用“RAW”。
有人有想法并且可以帮助我吗?
编辑:目前,id 是使用 java.util.UUID 生成的,并以 varchar 形式存储在数据库中。但由于该数据类型的性能问题,我想将 ids 存储为 uuid 类型。对于Oracle来说,必须使用RAW类型,因为不存在uuid类型。如何告诉 JPA 在 PostgreSQ/MSSQL 中使用 uuid 类型,在 Oracle 中使用 RAW 类型?
您可以使用 java.util.UUID 生成 uuid 并将其存储到字符变化(60)列类型中。现在,既然您想成为主键,那么最好自动生成它并持久保存。因此,您可以在 PrePersist 中为您的类添加一个实体侦听器:
@EntityListeners({ AbstractEntity.AbstractEntityListener.class})
public class Entity {
public static class AbstractEntityListener {
@PrePersist
public void onPrePersist(Entity entity) {
entity.uid();
}
}
private String uid() {
if (uid == null)
uid = UUID.randomUUID().toString();
return uid;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我没有对此进行测试。所以它可能无法100%工作。
| 归档时间: |
|
| 查看次数: |
1104 次 |
| 最近记录: |