问题标签 [hibernate-native-query]
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.
hibernate - 使用 mariadb 和 SqlResultSetMapping 的 JPA 本机查询抛出一个奇怪的错误
关系:
公司有地址。这就是我正在测试这个简单示例的全部内容。
这是具有 SqlResultSetMappings 的地址实体。
这是公司实体
希望是执行一个简单的本机查询并像这样映射结果集:
瞧……我执行了查询,结果爆炸了
现在,在有人问我为什么要为此使用本机查询之前,我想补充一点,我有一个更复杂的用例,它以类似的方式爆发(一个更复杂的查询)。所以我创建了上面的测试来重现这个问题,看看我是否能得到一些指示。
难道我做错了什么?为什么选择 created_2_2_0 呢?我的选择语句中什至没有它。这可能是 mariadb 驱动程序错误吗?
java - 从 SQL 视图休眠结果转换
我创建了一个 SQL 视图,其中包含 User 的所有属性和另外一个"is_granted"
,它是布尔值,使用自定义 pl/sql 函数计算。在我的应用程序中,我需要创建本机 SQL 查询并将值映射到 DTO 对象。问题是,在转换过程中抛出异常并且查询失败。
考虑以下模型:
查询 - 将属性映射到 DTO
有谁知道问题出在哪里?转型有什么问题吗?
堆栈跟踪
java - 本机查询结果参数未映射到类模态
我在 JPA 存储库中使用了本机查询,我的查询如下:
从我的查询中,我得到了“versionNo”,它没有映射到 mu 用户模式。我也把它放在我们的用户模式中,比如
with 是 getter/setter.but 在视图中我会得到 versionNo 为空。
请帮我。
sql-server - 在哪里可以找到使用本机查询连接到 SQL Server 数据库的有效 Java EE 示例应用程序?
在哪里可以找到使用本机查询连接到 SQL Server 数据库的有效 Java EE 示例应用程序?
我正在使用 Eclipse、Microsoft SQL Server Management Studio (SSMS)、glassfish、
我需要将 Eclipse 中的 Java EE 应用程序连接到 SSMS 中的数据库。
我需要一个使用本机查询专门调用 SQL Server 的应用程序,例如“SELECT * FROM Table”。
谢谢
sql-server - Hibernate 从本机查询创建的查询包含非法语法
我试图从带有本机查询的表中进行选择,如下所示:
当firstIndex
为 0 时(不管是什么pageSize
),Hibernate 为我创建以下查询:
这很好,但是当我将 更改为firstIndex
0 以外的值时,hibernate 将为我创建以下查询:
但此查询包含SELECT * as page0_
的不是有效的 SQL Server 语法。
另请注意,当我使用以下代码时,一切都很好:
谁能告诉我怎么了?这是一个错误还是我做错了什么?
java - Hibernate createNativeQuery 返回 Clob 的代理对象
我被迫进入使用休眠 createNativeQuery 返回对象数组列表的情况。
我的查询从中返回值的(许多)列之一是 CLOB。
返回的 Object 是 com.sun.Proxy 对象。
我在这里 看到了一个问题
用于标识它是一个被返回的 WrappedClob。
但是,鉴于我现在在我的 Java 代码中有这个代理对象,我如何将它转换成有用的东西……比如字符串?
mysql - 本机查询 executeUpdate 似乎在 Spring 事务中提交数据
我的用例如下:创建应用程序用户(EntityManager.persist)时,我还必须创建一个数据库用户并授予他权限(这就是我需要休眠nativeQuery的原因)。
我有一个 Spring @Transactional 方法,它通过两个调用调用我的 DAO:
我的 DAO 方法如下所示:
现在,只要执行executeUpdate()的第一行,我就可以在数据库中看到持久的 companyReportsUser 以及 DB 用户(user1@localhost)。
所有的 nativeQueries 都被执行并立即一一提交。由于它们已提交,因此无法回滚。我的配置中的任何地方都没有设置自动提交参数,所以我假设它是“假”,如 Hibernate 文档中所见。
我已经在没有本机查询的情况下测试了 @Transactional 行为,它按预期工作(当我抛出 RuntimeException 并且没有数据插入数据库时,事务被回滚)
在调试时,我发现持久化操作在正在运行的事务中调用时会延迟执行。
本机查询似乎立即创建并执行 PreparedStatement(至少我没有找到任何类型的队列。
我想我可能无法获得 hibernate 本机查询和 Spring 事务之间的交互,但是我花时间阅读了有关事务和本机查询的 Spring 和 Hibernate 文档,但没有找到任何对我有帮助的东西。
也许有比本机查询更好的方法来创建数据库用户并授予权限(尽管我没有找到)
以下是我的应用程序配置:
应用程序上下文.xml
持久性.xml
使用的库:
- 休眠 4.1.6.FINAL
- Spring 3.2.2.RELEASE
- mysql-connector-java-5.1.21
- MySQL 5.5
oracle - 使用容器管理的数据源执行 Oracle 本机查询
我有一个使用 JPA连接<non-jta-datasource>
到persistence.xml
容器管理的 Oracle 数据源的项目,我必须在某些时候使用动态构建的本机查询。默认情况下,在 Oracle 中,我需要schema
在表名中指定进行查询,但我无权访问模式名称(也不应该)。
首先,这是预期的行为吗?如果我执行SELECT * FROM TABLE
Hibernate 是否应该将其重命名为 Datasource 参数并SELECT * FROM SCHEMA.TABLE
改为执行?
如果不是,有没有办法以动态方式检索模式名称?即使数据源由 WebLogic/JBoss 管理?
java - 将 ID 分配给 JPA 本机查询的结果的最简单方法是什么?
我有一个复杂的 SQL 查询,我在 JPA 中将其作为本机查询来实现。实体管理器会自动将我的结果集的每一行转换为一个Person
对象,从而导致List<Person>
entityManager 要求Student
bean 使用 注释@Entity
,这需要@Id
. API 还要求所有字段都匹配。不幸的是,我的 select 子句来自各种来源,因此实际上并没有 ID。事实上,我想稍后在我调用StudentRepostiory.save(student)
.
我处于第 22 条捕获状态。我需要一个 id 来生成对象,但我还没有 id。
我应该怎么办?
- 我试过让 ID 为空。它使所有结果为空。
- 我已经尝试将 ID 设为零。它使所有结果都相同。
- 我尝试添加生成策略注释。什么都没做。
供你参考
学生.java
java - How to avoid executing the query multiple times?
Say I have this nativeQuery in my DAO:
which returns all the values I need.
The problem is I have too many results and I need the query to run only once instead of running for every single row found.
I'm retrieving the query result and setting all the values into a class (value object) called Class
like this:
I'm a bit stuck here because I've never treated this Object[]
to Class
casting before.