问题标签 [sqlresultsetmapping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
20464 浏览

java - 具有 SqlResultSetMapping 和本机查询的 JPA 数据存储库

我陷入了以下情况:

我的实体彼此相关,但是我无法使用 JPQL。我被迫使用本机 SQL。现在我想将这些结果映射到一个 ValueObject。需要明确的是,我不想获取 Object 数组 ( List<Object[]>) 的列表。我有 6 个实体,我只需要其中的一些列。谁能给我一个关于如何从本机查询实现这种映射的示例?

我经历的教程。

我的代码:

在我的 jpa-repository 模块中:

关键是我不知道将这些注释放在哪里,所以我可以使用这种映射。在本机查询中,我不能使用new rs.rado.leo.mypackage.MyVO(...). 我收到以下错误:

造成的:

我想我的问题很清楚。如果没有,请告诉我,以便我可以编辑我的问题。

提前致谢!

0 投票
0 回答
248 浏览

java - 用于 SQL 内连接语句的 Spring 的 ResultsSetExtractor

我正在尝试使用 ResultSetExtractor 向数据库发送一条 SQL 语句,但该方法卡在了行上l.setId(resultSet.getInt("Id"));

这是我的错误信息:

“消息”:“PreparedStatementCallback;SQL [SELECT Cities.Name FROM city INNER JOIN Notes on Cities.Id = Notes.CitiesId WHERE Notes.CitiesId = ? AND Notes.id = ?] 的未分类 SQLException;SQL 状态 [S0022];错误代码 [0];未找到列 'Id'。;嵌套异常是 java.sql.SQLException:未找到列 'Id'。",

Cities表有 3 列,分别命名为IdNameCode。我在 Workbench 中检查了我的 SQL 语句,它是正确的。我的代码有什么问题?

0 投票
1 回答
2339 浏览

one-to-many - 如何使用@SqlResultSetMapping 将一对多本机查询结果映射到 POJO 类

我在使用 Java 和 MySql 的后端 API 中工作,我正在尝试使用 JPA 2.1 中的 @SqlResultSetMapping 将一对多本机查询结果映射到 POJO 类,这是本机查询:

而且,这是我的结果 SQL 映射:

而且,这里是 POJO 类的实现:(我刚刚删除了构造函数和 getter/setter)

MiniUser 类

和 MiniUserAnswer 类

我的目标是执行这个查询并返回一个列表MiniUser,并且在每个 MiniUser 中:一个他的“答案”列表,这是一个列表MiniUserAnswer

运行此代码后,我收到此错误:

我知道为什么,因为查询选择语句中没有“答案”字段。
那么,考虑到性能,我该如何完成这样的事情?这个答案列表可能达到 100。

非常感谢您的帮助,在此先感谢!

0 投票
0 回答
549 浏览

jpa - 用于 SQL 别名的 JPA SQLResultSetMapping 根本不起作用?

对于使用联接表的更复杂的查询,需要具有别名字段名称的本机 SQL + 重新映射以接收托管实体。

但是,SQL 别名的映射会导致无法找到别名字段的异常。任何人都可以在下面的代码中检测到错误,或者 SQLResultSetMapping 是否损坏?(下面的示例故意简单以便快速检查)

关系型数据库 H2、DDL

Java 类

执行停止异常:

换句话说,这意味着:没有发生映射 -> 未找到别名字段

在临时查询中宣布映射时也是如此。

如果使用 resultClass 而不是 resultSetMapping 并且不存在 SQL 别名,则输出应为正常。(这证明没有字段拼写错误或任何其他错误)

输出:

0 投票
1 回答
361 浏览

jpa - JPA SqlResultSetMapping 对象顺序

JPA:如果在@SqlResultSetMapping 中定义了类、实体和列,那么返回对象的顺序是什么?

结果行是 Object[]{customer, order, scalar_value} 或 Object[]{order, scalar_value, customer} 等。

0 投票
1 回答
13387 浏览

java - @NamedNativeQuery 和 @SqlResultSetMapping 用于非实体

我一直以这篇文章为例。我有一个复杂的连接查询(这里简化)。它返回来自两个表的值的子集(以及使用 CASE 的派生列)。我认为我不需要使用实体注释,因为从我的结果集中返回的对象不是我架构中的实际表。

我想要保存连接查询结果的非实体对象:

我的回购:

我的服务:

我不确定如何让我的仓库看到我在 NamedNativeQuery 中定义的新 CarLimitDelta.getCarLimitDelta 本机查询方法。我收到以下错误:

派生查询无效!找不到类型 CarLimitDelta 的属性 getCarLimitDelta!

0 投票
1 回答
1359 浏览

java - 将 SQL 原生查询映射到 POJO 类

我尝试使用以下将本机 SQL 查询映射到 POJO@ConstructorResult@SqlResultSetMapping

然后为了在创建本机查询时使用声明的结果集映射,我通过它的名称引用它:

但这对我不起作用,我收到以下错误:

org.hibernate.MappingException:未知的 SqlResultSetMapping [AnomalieMapping]

这是我在 SGBD 中执行 SQL 查询时生成的内容:

在此处输入图像描述

0 投票
1 回答
1039 浏览

java - hibernate原生查询复杂构造函数映射

Java、Spring 数据 JPA

我有 2 个实体:

我需要这样的统计本机查询结果:

我想得到Java对象MyResult的结果:

最接近的解决方案是像这样使用@SqlResultSetMapping:

或者

使用第二个变体,我可以使用这样的东西:

但我希望它使用@SqlResultSetMapping 自动化......(因为我的真实对象更复杂)

0 投票
1 回答
627 浏览

java - 将结果集映射到不是实体的自定义 pojo

我需要通过加入多个表来获取 4 列。我已经创建了查询。但是如何将结果集映射到不是实体的 pojo 并且我想使用 Spring Data JPA。

有人可以帮忙吗?

谢谢!

编辑 自定义 POJO 类:

`

`

0 投票
0 回答
390 浏览

hibernate - 将复杂的本机查询映射到 JPA/Hibernate 中的复杂非实体对象

在mybatis中我们可以定义非常复杂的sql结果集到任意复杂dto对象的映射。看看这里的例子:

http://www.mybatis.org/mybatis-3/sqlmap-xml.html

在“高级结果映射”部分,我们有一个博客映射器,它有一个作者和帖子的集合,每个帖子都有一个评论和标签的集合。

问题是:在技术上是否可行,以及如何在 JPA/Hibernate 中创建 SqlResultSetMapping,将上一个示例中的本机 sql 查询映射到上一个示例中的 dto 对象(博客)?假设博客不是我们实体模型的一部分,而是特定用例的一些 dto 对象。如果这不能通过使用 SqlResultSetMapping 来实现,那么在假设 Blog、Post、Comment ......是特定用例的一些特定 dto 对象的情况下,在 JPA/Hibernate 中实现这一目标的最佳方法是什么?

请记住,这只是说明的示例,重点是“这在技术上是否可行以及如何”,而不是“当您可以定义 JPA 关系并让框架生成 sql 时,为什么有人在这个示例中做这样的事情为你...”。