我想在 JPA 2.1 中将“命名查询”转换为“SQL 查询”并在运行之前对其进行更改。
例如,我有这个命名查询:SELECT CU FROM CUSTOMER WHERE CU.CODE=?1 我想在 pars 之后获取查询并转换和编辑它(例如添加模式名称)并创建这个查询:SELECT * from db1.cc1cust cu 其中 cu.cc1cod=?1
我怎样才能做到这一点?
问候
我想在 JPA 2.1 中将“命名查询”转换为“SQL 查询”并在运行之前对其进行更改。
例如,我有这个命名查询:SELECT CU FROM CUSTOMER WHERE CU.CODE=?1 我想在 pars 之后获取查询并转换和编辑它(例如添加模式名称)并创建这个查询:SELECT * from db1.cc1cust cu 其中 cu.cc1cod=?1
我怎样才能做到这一点?
问候
可以在实体的 @Table 注释或 orm.xml 文件中指定数据库模式。
在 EclipseLink 中,您还可以使用 SessionCustomizer 中的 tableQualifier 设置模式。
没有办法在 JPQL 中更改模式。
要在 EclipseLink 中获取 JPQL 查询的 SQL,您可以在 DatabaseQuery 上使用 getSQLString(),请参阅 http://wiki.eclipse.org/EclipseLink/FAQ/JPA#How_to_get_the_SQL_for_a_Query.3F
如果您正在尝试实现多租户支持,您可能希望研究 EclipseLink 的多租户支持,
http://www.eclipse.org/eclipselink/documentation/2.5/jpa/extensions/a_multitenant.htm#BABIEJGD