【问题标题】:Is there any disadvantages with using createNativeQuery() method of JPA使用 JPA 的 createNativeQuery() 方法有什么缺点吗
【发布时间】:2015-07-31 01:20:58
【问题描述】:

我有一个包含这么多连接的大查询,并且我尝试了查询的 JPQL 实现(使用 createQuery() 方法),但是在使用实体而不是表名时遇到了很多语法问题。所以我选择了本机查询实现,因为它在我的 Oracle DB 上正确执行我的查询。 本机查询是特定于数据库的吗?如果我们将数据库从 Oracle 更改为其他数据库,如 MySql 或 SQLServer,它会工作吗?请帮助我,在此先感谢。

【问题讨论】:

    标签: java oracle jpa


    【解决方案1】:

    看看这个页面,它显示了 mysql、Oracle 和 mssql 之间的一些差异:

    http://www.bristle.com/Tips/SQL.htm#differences_in_sql_syntax

    您可以看到指定某些类型的连接的方式有所不同。

    所以是的,如果您选择使用本机查询实现和切换数据库,您可能会遇到复杂查询的问题。

    【讨论】:

    • 如果可能的话,你能给我提供一个带有一些连接的 JPQL 查询吗?提前致谢。
    • 用你的 sql 查询和你使用 jpql 的尝试发布一个问题。
    • 嗨罗伯特,下面是我试图在 JPQL 中实现的实际查询
    • 选择 req.transactiontime, c.claimid 作为推荐号码, rslt.failure_reason_code,cl.servicedate, cl.clmline_index,rslt_line.failure_reason_code,exp.explanation_code, from pricreq req join prof_claim c on (c.id = req.prfclm_id) 加入 prof_cl_line cl on (c.id = cl.owner_id) 加入 pricresult rslt on (req.systemid = rslt.systemid and req.requestid = rslt.requestid) 加入 pricresult rslt_line on (rslt.id = rslt_line. claimres_id) 左外连接 pricresultexp exp on (rslt_line.id = exp.lineresult_id) where cl.clmline_index = rslt_line.clmlinepri_index
    • 发布一个新问题,您将有更好的机会得到答案。
    猜你喜欢
    • 2012-03-08
    • 2016-05-23
    • 1970-01-01
    • 2010-09-27
    • 2011-04-26
    • 2011-02-28
    • 2020-08-07
    • 2014-10-04
    • 1970-01-01
    相关资源
    最近更新 更多