【问题标题】:JPA, are query hints vendor specific?JPA,查询提示是供应商特定的吗?
【发布时间】:2016-06-02 17:15:36
【问题描述】:

是否有可以使用的 JPA 供应商中立查询提示?在我对查询提示的谷歌搜索期间,每次提到它都是供应商特定的查询提示。

来自doc

设置查询属性或提示。提示元素可用于 指定查询属性和提示。由 this 定义的属性 供应商必须遵守规范。供应商特定提示 提供者无法识别的必须被忽略。 便携式应用程序不应依赖标准超时提示。 取决于使用的数据库和使用的锁定机制 提供者,这个提示可能会也可能不会被观察到。

我不确定我是否正确理解了这一点。这是否意味着有供应商中立的查询提示或没有?如果是这样,我在哪里可以找到描述这些的列表?

【问题讨论】:

  • 措辞很明确。标准提示在 JPA 规范中,所有供应商都支持。供应商特定的提示就像它所说的......供应商特定的......并且被任何其他供应商忽略。
  • @NeilStockton “措辞非常明确”。这不是主观的吗?我接受的答案也像我一样理解没有标准提示..
  • 有标准提示。这里它们是 javax.persistence.lock.timeout、javax.persistence.query.timeout、javax.persistence.fetchgraph、javax.persistence.loadgraph。这里有一个模式....它们都以 javax.persistence 开头,并且都在 JPA 规范中明确指定
  • 也是“答案”使用的 ref,指的是另外两个与查询 javax.persistence.cache.retrieveMode 和 javax.persistence.cache.shareMode 的 L2 缓存交互有关的内容。同样,它们遵循相同的规则……命名空间定义为 javax.persistence。是的,有标准提示
  • @NeilStockton 好吧,我没有访问该链接。我以为他是对的。在谷歌上输入 JPA 列表查询提示,你会看到所有你会发现是特定于供应商的

标签: java jpa jakarta-ee


【解决方案1】:

根据 Eclipse 网站 (http://www.eclipse.org/eclipselink/documentation/2.6/concepts/queries006.htm) 上的文章,查询提示是特定于供应商的。

Eclipse 声明:“查询提示的定义是特定于供应商的。以下部分描述 JPA 查询提示和 EclipseLink 查询提示”

本文继续介绍两种查询提示(JPA 和 EclipseLink)的具体实现细节。

对 Apache 网站 (http://openjpa.apache.org/builds/2.3.0/apache-openjpa/docs/manual.html#jpa_hints_named) 的进一步研究似乎证实了查询提示是特定于供应商的。

第 1.8 节查询提示...

“特定数据库无法处理或 OpenJPA 未知的提示将被忽略。OpenJPA 已知但提供不兼容值的提示将导致抛出 IllegalArgumentException。”

根据我阅读的内容以及您在问题中链接的内容,我认为没有“供应商中立”的查询提示。预期的行为是,如果供应商不支持指定的查询提示,它将被简单地忽略。

【讨论】:

    猜你喜欢
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 2016-08-18
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多