gpt4 book ai didi

java - 使用 JPA 的不同数据库的不同列类型

转载 作者:搜寻专家 更新时间:2023-11-01 03:52:33 25 4
gpt4 key购买 nike

是否可以根据使用的数据库使用 JPA 定义不同的列类型?

我需要将 id 存储为 uuid 并且它必须是可移植的。那就是问题所在。 PostgreSQL 有 'uuid',MSSQL 有 'uniqueidentifier' 而 Oracle 什么都没有,我认为必须使用 'RAW'。

有任何想法可以帮助我吗?

编辑: 目前,id 是使用 java.util.UUID 生成的,并作为 varchar 存储在数据库中。但是由于该数据类型的性能问题,我想将 id 存储为 uuid 类型。对于 Oracle 必须使用 RAW 类型,因为不存在 uuid 类型。我如何告诉 JPA 在 PostgreSQ/MSSQL 中使用 uuid 类型,在 Oracle 中使用 RAW 类型?

最佳答案

您可以使用 java.util.UUID 生成您的 uuid 并将其存储到字符可变 (60) 列类型中。现在既然你想成为一个主键,那么自动生成它应该很好。因此,您可以在 PrePersist 上为您的类(class)添加一个实体监听器:

@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;
}
}

请注意,我没有对此进行测试。所以它可能不会 100% 有效。

关于java - 使用 JPA 的不同数据库的不同列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21460074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com