【问题标题】:Open JPA ResultSet mapping打开 JPA ResultSet 映射
【发布时间】:2016-06-08 12:05:47
【问题描述】:

我有一个名为 order 的实体,它包含 10 列,并且还有嵌入的 id(composite key) 列,其中包含实体 order 中的 5 个字段。

这是我的 sql 查询

<named-native-query name="OrderQuery" result-set-mapping="OrderQueryResultSetMapping">
  <query>
    <![CDATA[SELECT t0.colum2, t0.column4, to.embededid.colum3, e mbededid.colum1, FROM order  t0 WHERE t0.orderid = ?1 ]]>
  </query>
</named-native-query>

我试图在 orm.xml 中构建 sql 结果集映射

<sql-result-set-mapping name="OrderQueryResultSetMapping">
  <entity-result entity-class="order">
    <field-result name="column2" column="column_2" />
    <field-result name="column4" column="column_4" />
  </entity-result>
  <entity-result entity-class="orderembededId">
    <field-result name="column3" column="column_3" />
    <field-result name="column4"1column="column_1" />
  </entity-result>
</sql-result-set-mapping>

我的查询执行没有问题,但在sqlResultSetMapping 中出现错误。我收到以下错误。

Exception in thread "main" <openjpa-2.4.0-r422266:1674604 fatal general error> 
org.apache.openjpa.persistence.PersistenceException: [jcc][t4][10145][10897]
[3.58.81] Invalid parameter 0: Parameter index is out of range. ERRORCODE=-4461, SQLSTATE=42815

我们可以做这种映射吗?如果是这样,客户端如何知道作为此查询的一部分为 Order 实体填充了哪些列?

【问题讨论】:

    标签: jpa sqlresultsetmapping


    【解决方案1】:

    好的,您可能自己已经想通了,但是您的查询中有一些拼写错误:

    • to.embededid.colum3 应该是 to.embededid.column3(无论如何,这就是它在映射中的名称,否则您应该在映射中更改它)。
    • 您的 SELECT 在 FROM 之前以逗号结尾,这不是有效的 SQL。
    • 你的映射有name="column4"1column="column_1",那个1不应该在那里。

    【讨论】:

      猜你喜欢
      • 2020-05-19
      • 1970-01-01
      • 2012-01-04
      • 2011-07-13
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      相关资源
      最近更新 更多