gpt4 book ai didi

java - 我们可以对多个数据库使用相同的 hibernate 注释 pojo 类吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:46:14 32 4
gpt4 key购买 nike

我有一个带有用于 postgresql 数据库的 hibernate 注解的 JAVA POJO 类。

现在,我要求我们的应用程序支持多个数据库。我的问题是:我们应该对其他数据库(Oracle、MySQL、SQL Server)使用相同的类,还是应该为每个不同的数据库编写单独的注释类?

原因:为了支持特殊字符,我们使用数据库专有类型而不是像

这样的 hibernate 类型
// for oracle
@Column(sql-type="nvarchar2")
private String name;

// for sql server
@Column(sql-type="nvarchar")
private String name;

// hibernate doesn't support different proprietary sql types at same type like this
@Column(sql-type={"nvarchar","nvarchar2"})
private String name;

最佳答案

如果默认情况下对所有 String 类型的列使用 nvarchar 没问题,您可以扩展 Oracle 和 MS SQLServer 方言并执行如下操作:

public class CustomOracleDialect extends org.hibernate.dialect.Oracle10gDialect {

@Override
protected void registerCharacterTypeMappings() {
super.registerCharacterTypeMappings();
registerColumnType(Types.VARCHAR, "nvarchar2");
}
}



public class CustomSQLServerDialect extends org.hibernate.dialect.SQLServer2012Dialect {

public CustomSQLServerDialect() {
super();
registerColumnType(Types.VARCHAR, "nvarchar");
}
}

然后根据使用的数据库类型配置这些方言。

关于java - 我们可以对多个数据库使用相同的 hibernate 注释 pojo 类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53319915/

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