【问题标题】:Getting around lack of support for List in Native Query in clauses in openJPA在 openJPA 的子句中解决对本地查询中的列表缺乏支持的问题
【发布时间】:2012-06-25 18:28:58
【问题描述】:

我不知道为什么有人会这样做(包括对命名查询中的列表的支持,但不支持本地命名查询(当我告诉你我对此非常生气时相信我)。如何绕过这个缺陷?我不可能将数组的所有位置值都放入本机查询中,它可能长达数百个单位!!!!!您将如何处理?

【问题讨论】:

  • 您能否提供有关您遇到的问题的更多详细信息?
  • 没什么可评论的...我尝试使用 in 子句和 ArrayList 作为参数来执行 NamedNativeQuery。但是,我收到一个异常,告诉我 arrayList 不是例外类型。想象一下我的惊愕,因为它是一个只有 NamedQueries 的例外类型。我目前正在通过各种阴谋来做与假设包含简单逻辑我可以做的完全相同的事情。

标签: openjpa


【解决方案1】:

您可以将 List 作为参数传递给普通 SQL 语句吗?没有。

 /**
 * Create an instance of Query for executing a native SQL statement, e.g., for update or delete.
 * @param sqlString a native SQL query string
 * @return the new query instance
 */ 
 public Query createNativeQuery(String sqlString);

当您创建本机查询时,JPA 提供程序会盲目地将 SQL 传递给数据库,并假定用户已正确格式化 SQL。

如果您想将 List 作为查询参数传递,请使用 JPQL。

【讨论】:

  • 我实际上最终做的是编写一个 nativeNamedQuery 并使用 foreach 循环构建 In 子句,如果 'index % 1000 = 0' 则使用 Or In 子句(基本上如果它是 1000 的因子)。
猜你喜欢
  • 2020-02-17
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 2014-10-08
  • 2018-03-10
  • 2020-03-16
  • 1970-01-01
  • 2017-11-06
相关资源
最近更新 更多