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

JPA Hibernate-多个数据库方言和nvarchar(长度)数据类型

隗星驰
2023-03-14

我必须使用JPA+Hibernate做一个项目,其中我使用了3种方言:mysql5innodbdealication、mssql2012dealication和oracle12cdealication。

现在我有一个规范,它告诉我对于来自:

>

  • Oracle数据库,我必须使用NVARCHAR2(LENGTH)数据类型

    MySql数据库,我必须使用VARCHAR(LENGTH)数据类型

    @column(name=“columnname”length=255)私有字符串columnname;hibernate生成varchar(255),这只适用于MySQL

    如果我使用:

    @column(name=“columnname”,columndefinition=“nvarchar2(255)”)私有字符串columnname;这在MySQL中是不可能的,我得到错误是因为列定义,但在oracle中是可以的

    我尝试自定义MySQL方言创建

    公共类CustomMySQL5InnoDBDeatical扩展了MySQL5InnoDBDeatical{

    public CustomMySQL5InnoDBDialect() {
        super();
        registerColumnType(Types.NVARCHAR, "nvarchar2($l)");//$l not $1
        registerHibernateType(Types.NVARCHAR, StandardBasicTypes.STRING.getName());
    }
    

    }

    并在hibernate配置中为MySQL方言提供此类。如果我使用columnDefinition属性,我在MySQL中也会遇到同样的问题。

    你能帮忙解决这个问题吗?

  • 共有1个答案

    方权
    2023-03-14

    解决方案是利用JPA API规范为这种情况提供的特性。为需要支持的每个datastore定义一个文件orm.xml,并在使用每个数据库时启用必要的一个文件。有关文件格式的详细信息,请参阅此链接。这样,您就不需要考虑攻击您所使用的任何JPA提供者的内部特性,并且还保留了JPA提供者的可移植性以及数据库的可移植性

    将特定于模式的信息info(静态)Java注释的想法很奇怪,在需要数据库可移植性时更是如此。

     类似资料:
    • 我们正忙于一个需要支持多种语言的CakePHP项目。但有一个问题....有些页面不支持其他语言。因此,有西班牙网页,需要隐藏的意大利版本的网站。在CakePHP中对此有什么更好的解决方案? 只要您切换语言,我们就可以切换数据库,但问题是,作为用户,我们将错过重要的数据,如果我们这样做的话。如果只搜索西班牙文、意大利文、德文、英文、荷兰文和瑞典文的文章,可能会使数据库负荷过重。或者如果我们索引语言栏

    • 问题内容: 我有两个数据库和两个模型:管理员和用户。 我想将我的模型同步到两个数据库;admin模型到数据库A,用户模型到数据库B; 如果我将模型路径设置为和,则两个模型将同步到默认数据库。 如果我在命令中设置数据库,例如,则两个模型将同步到数据库B。 所以我的问题是,如何将两个模型同步到两个数据库? 问题答案: 我完全同意@alecxe使用数据库路由器。我目前正在使用一个管理界面来管理多个数据库

    • 我有两个数据库和两个模型:管理员和用户。 我想将我的模型同步到两个数据库;管理模型到数据库A,用户模型到数据库B; 如果我将模型路径设置为和,这两个模型将同步到默认数据库。 如果我在命令中设置数据库,比如,那么这两个模型将同步到数据库B。 所以我的问题是,如何将这两个模型同步到两个数据库?

    • 我目前正在构建一个访问数据库的restful API(带有Spring Boot)。此应用程序最终将托管在服务器上。 我想做的事情: 配置多个用户的数据库,并为他们分配不同的权限到不同的表 根据调用的endpoint,使用特定用户在该函数中执行该查询 如何配置上述应用程序? 到目前为止,我找到的答案涉及到配置多个数据源,但是对于上面的应用程序,只有一个数据源,但是有多个用户。 我已经阅读了以下链接

    • 问题内容: 所有,我必须创建一个具有基本架构的数据库。该数据库将很大(超过100GB),并将用作数据仓库。现在,该数据库的创建当前正在通过C#代码“一次命中”执行。从许多不同的来源中提取数据。由于数据量巨大,这种创建引起了一些问题。已经决定,与其一口气创建一个数据库,不如一次创建一个数据库。到 创建几个包含核心数据表的较小数据库。 将较小的数据库合并为一个较大的数据库。 建立架构/添加相关约束。

    • 问题内容: 我正在开发一种多语言软件。就应用程序代码而言,可本地化性不是问题。我们可以使用特定于语言的资源,并拥有与之配合使用的各种工具。 但是,定义多语言数据库架构的最佳方法是什么?假设我们有很多表(100个或更多),每个表可以有多个可以本地化的列(大多数nvarchar列应该可以本地化)。例如,其中一个表可能包含产品信息: 我可以想到三种支持NAME和DESCRIPTION列中的多语言文本的方