首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JPA和EclipseLink对2个(或更多)数据库进行命名原生查询

如何使用JPA和EclipseLink对2个(或更多)数据库进行命名原生查询
EN

Stack Overflow用户
提问于 2016-02-26 12:06:05
回答 1查看 317关注 0票数 1

如何为2个数据库命名原生查询,并让EclipseLink在数据库上运行正确的查询?

我举了一个例子:我有一个可以与Oracle Db和PostgreSQL一起运行的解决方案。需要在db上运行本机查询。因此,Oracle的原生查询不同于PostgresSQL的原生查询。如何将它们作为命名查询放在orm.xml中,然后让EclipseLink根据运行时环境在每个数据库上运行正确的查询。

每个数据库都应该有替代的orm文件吗?不允许使用存储过程/db函数和类似的东西。所以我必须命名原生的quire。

EN

回答 1

Stack Overflow用户

发布于 2016-02-27 02:15:22

JPA2.1允许将命名查询动态添加到factory,允许您根据您的平台在运行时指定要添加的查询。

除非您打算将目标数据库传递给您的代码,否则从提供程序获取它将需要本机API或使用连接来获取其元数据。从EclipseLink获取它需要获取会话,然后在会话上调用getPlatform(),并使用它的isOracle和isPostgreSQL来确定要添加哪个查询,或者为其他平台添加一个通用查询。就像这样

代码语言:javascript
复制
entityManagerFactory.unwrap(Session.class).getPlatform().isOracle();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35643269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档