问题标签 [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.
java - 具有 SqlResultSetMapping 和本机查询的 JPA 数据存储库
我陷入了以下情况:
我的实体彼此相关,但是我无法使用 JPQL。我被迫使用本机 SQL。现在我想将这些结果映射到一个 ValueObject。需要明确的是,我不想获取 Object 数组 ( List<Object[]>
) 的列表。我有 6 个实体,我只需要其中的一些列。谁能给我一个关于如何从本机查询实现这种映射的示例?
我经历的教程。
我的代码:
在我的 jpa-repository 模块中:
关键是我不知道将这些注释放在哪里,所以我可以使用这种映射。在本机查询中,我不能使用new rs.rado.leo.mypackage.MyVO(...)
. 我收到以下错误:
造成的:
我想我的问题很清楚。如果没有,请告诉我,以便我可以编辑我的问题。
提前致谢!
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 列,分别命名为Id
、Name
和Code
。我在 Workbench 中检查了我的 SQL 语句,它是正确的。我的代码有什么问题?
one-to-many - 如何使用@SqlResultSetMapping 将一对多本机查询结果映射到 POJO 类
我在使用 Java 和 MySql 的后端 API 中工作,我正在尝试使用 JPA 2.1 中的 @SqlResultSetMapping 将一对多本机查询结果映射到 POJO 类,这是本机查询:
而且,这是我的结果 SQL 映射:
而且,这里是 POJO 类的实现:(我刚刚删除了构造函数和 getter/setter)
MiniUser 类
和 MiniUserAnswer 类
我的目标是执行这个查询并返回一个列表MiniUser
,并且在每个 MiniUser 中:一个他的“答案”列表,这是一个列表MiniUserAnswer
。
运行此代码后,我收到此错误:
我知道为什么,因为查询选择语句中没有“答案”字段。
那么,考虑到性能,我该如何完成这样的事情?这个答案列表可能达到 100。
非常感谢您的帮助,在此先感谢!
jpa - 用于 SQL 别名的 JPA SQLResultSetMapping 根本不起作用?
对于使用联接表的更复杂的查询,需要具有别名字段名称的本机 SQL + 重新映射以接收托管实体。
但是,SQL 别名的映射会导致无法找到别名字段的异常。任何人都可以在下面的代码中检测到错误,或者 SQLResultSetMapping 是否损坏?(下面的示例故意简单以便快速检查)
关系型数据库 H2、DDL
Java 类
执行停止异常:
换句话说,这意味着:没有发生映射 -> 未找到别名字段
在临时查询中宣布映射时也是如此。
如果使用 resultClass 而不是 resultSetMapping 并且不存在 SQL 别名,则输出应为正常。(这证明没有字段拼写错误或任何其他错误)
输出:
jpa - JPA SqlResultSetMapping 对象顺序
JPA:如果在@SqlResultSetMapping 中定义了类、实体和列,那么返回对象的顺序是什么?
结果行是 Object[]{customer, order, scalar_value} 或 Object[]{order, scalar_value, customer} 等。
java - @NamedNativeQuery 和 @SqlResultSetMapping 用于非实体
我一直以这篇文章为例。我有一个复杂的连接查询(这里简化)。它返回来自两个表的值的子集(以及使用 CASE 的派生列)。我认为我不需要使用实体注释,因为从我的结果集中返回的对象不是我架构中的实际表。
我想要保存连接查询结果的非实体对象:
我的回购:
我的服务:
我不确定如何让我的仓库看到我在 NamedNativeQuery 中定义的新 CarLimitDelta.getCarLimitDelta 本机查询方法。我收到以下错误:
派生查询无效!找不到类型 CarLimitDelta 的属性 getCarLimitDelta!
java - hibernate原生查询复杂构造函数映射
Java、Spring 数据 JPA
我有 2 个实体:
我需要这样的统计本机查询结果:
我想得到Java对象MyResult的结果:
最接近的解决方案是像这样使用@SqlResultSetMapping:
或者
使用第二个变体,我可以使用这样的东西:
但我希望它使用@SqlResultSetMapping 自动化......(因为我的真实对象更复杂)
java - 将结果集映射到不是实体的自定义 pojo
我需要通过加入多个表来获取 4 列。我已经创建了查询。但是如何将结果集映射到不是实体的 pojo 并且我想使用 Spring Data JPA。
有人可以帮忙吗?
谢谢!
编辑 自定义 POJO 类:
`
`
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 时,为什么有人在这个示例中做这样的事情为你...”。