问题标签 [hibernate-session]

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 投票
1 回答
382 浏览

java - 在 Hibernate 中查询内部事件侦听器的最佳实践

我们有一个 FlushEventListener 来执行审计功能。在更新某些实体时,hibernate 会在刷新之前回调我们的审计代码。审计代码需要查询数据库。

如果我们尝试在同一个会话中执行此操作,显然我们会弄乱会话的状态:我们从 hibernate 内部得到一个 NullPointerException,在某个时刻,当它在名为 NaturalIdXrefDelegate 的类中验证 naturalIds 时。

我们目前通过为审计查询打开一个新会话来解决它。这样做的问题是我们失去了 getCurrentSession 的好处(整个请求的会话,由休眠管理)。这样,我们将回到每个查询打开一个会话。

是否有一个优雅的解决方案,或者我们基本上需要重新实现 getCurrentSession 来管理我们自己的请求中的会话#2?

0 投票
1 回答
723 浏览

hibernate-entitymanager - @NaturalId 仅在根实体(或其@MappedSuperclasses)上有效,在联接的多表继承中使用自然 ID

基本上我无法通过在搜索选项卡中粘贴根异常“ @NaturalId 仅在根实体(或其@MappedSuperclasses)上有效”在谷歌中找到一些类似的问题。我正在使用加入的多表继承策略将我的具体/子实体StudentEmployee),包括他们的抽象父Person)映射到我数据库中的三个表,到目前为止我从来没有遇到过问题,直到我意识到我需要使用学生的studentId为我的学生实体实现自定义查询. 我设法从实体管理器中提取了底层的 Hibernate-session,现在我可以清楚地看到并使用我心爱的 HibernateSession 中需要的方法(我们都知道 Hibernate 有用于 naturalIds 的方法,例如(byId、byNaturalId 等)。 ),并且这些方法对于查询实体真的非常有用。所以我只是用@NaturalId注释我的studentId 数据成员,直到.. 我执行了一些操作(保存/创建),然后向我抛出多行异常。而根本原因是..

我将粘贴我的实体的代码以获取更多信息

Parent 抽象基

人物

实体子

学生

问题:我可以做些什么来对不同的学生实体进行唯一查询吗?因为 Hibernate 的 naturalId 方法对于执行诸如 get 或 update 等实体的操作非常有用

是否有任何解决方法可以在不牺牲实体和数据库表的设计的情况下完成我想要的工作?如果可能的话,我希望 studentId 充当 naturalId 。请有任何建议/帮助/意见。任何事情都将不胜感激。

0 投票
2 回答
2365 浏览

java - 何时使用 session.replicate() 方法

根据休眠文档:,有一个关于如何使用session.replicate()该功能和用例的小示例:

第 11.9 节。在两个不同的数据存储之间复制对象:

此功能的用例包括协调输入不同数据库实例的数据、在产品升级期间升级系统配置信息、回滚在非 ACID 事务期间所做的更改等等。

有人可以帮助我了解它在以下情况下的帮助:

  • 在产品升级期间升级系统配置信息
  • 回滚在非 ACID 事务期间所做的更改等等。
0 投票
1 回答
450 浏览

java - 为什么 System.out.println() 可以解决我的 Hibernate Session?

你好我是学习hibernate框架的新手。我解决了我的错误,但我不知道发生了什么问题。在我的项目中,我有 2 张桌子TblbarangTbljenis. 并且 1 字段Tblbarang具有作为外键的关系Tbljenis

我想更新Tblbarang表。我有两种方法

这种设置模型组合框的方法,我会选择设置表Tblbarang项。

现在这个方法来更新我的 Table Tblbarang

当没有System.out.print()错误时

我将像这样简单地编写代码

但异常显示相同的错误。我想知道我的代码会发生什么?任何人都可以解释这个问题,或者这是来自休眠的错误,谢谢

0 投票
8 回答
33157 浏览

java - org.hibernate.service.UnknownServiceException:请求未知服务

我正在为我的 AbstractHibernateRepository 保存方法编写一个单元测试。我正在使用弹簧测试运行器,但运行时出现以下异常:

我的测试:

存储库:

弹簧配置:

是什么导致了这个问题,我该如何解决?

0 投票
1 回答
551 浏览

spring - 春季事务嵌套开放会话?

如果一个服务方法被标记为@Transactional嵌套传播,并且在其中有很多对其他@Transactional方法的调用,那么这些方法中的每一个都会使用自己的会话吗?对于一个方法调用,它应该代表与 db 的许多连接,不是吗?

0 投票
1 回答
1105 浏览

hibernate - Hibernate nested transactions / sessions and proxy associations

I am using hibernate 4 and spring-aop to handle transactions so that there is always an open transaction on the server side.

I want to create a nested transaction to work on it in isolation but I get an error: Illegal attempt to associate a proxy with two open sessions. See example below:

Entity e2 created with data from a persisted entity e1 and saved in a nested transaction. E1 has a deep graph not completely initialized.

What would be the correct way of creating e2 without throwing an exception?

Example scheme:

Code example:

Maven project with detailed test case at [https://github.com/cemartins/test-cases].

0 投票
1 回答
611 浏览

spring - 在休眠4中保存在数据库中后数据未检索

我将 Hibernate 4 与 Spring 4 一起使用。我创建了自己的会话工厂并使用了 Hibernate Transaction Manager。保存后检索数据时出现问题。我正在使用 ProcedureCall 保存数据,并且在每种方法中我都在打开会话并关闭会话。问题是什么?如果我删除 session.close() 那么它工作正常。

0 投票
0 回答
170 浏览

java - 在两个不同的休眠会话中休眠查询时间非常不同(未启用任何二级缓存)

我正在尝试通过休眠查询来衡量数据获取时间的性能。为了这 :-

a.) 我打开了两个不同的会话,并且在两个会话中,我都使用了相同的 Hibernate 查询。

b.) 在 Session1 中,所用时间为 162 毫秒,在 Session2 中获取数据时,所用时间为 24 毫秒。

为什么查询执行时间会有这种差异?根据逻辑理解,每次(在不同的会话中),都会有一个新的查询被命中......所以,查询执行时间也应该是相似的。???

注意:- 此测试程序中没有启用二级缓存。

会话会话 = HibernateUtil.getSessionFactory().openSession(); VendorDaoImpl vendorDao = new VendorDaoImpl();

以下是结果:-

Hibernate:选择 vendordeta0_.id 作为 id0_0_,vendordeta0_.banned_zip_pattern 作为banned2_0_0_,vendordeta0_.code 作为code0_0_,vendordeta0_.company_name 作为company4_0_0_,vendordeta0_.created 作为created0_0_,vendordeta0_.cst_number 作为cst6_0_0_,vendordeta0_.default_page 作为default7_0000 启用, vendordeta0_.max_invoice_number as max9_0_0_, vendordeta0_.name as name0_0_, vendordeta0_.next_invoice_number_reset_date as next11_0_0_, vendordeta0_.print_mock_invoice as print12_0_0_, vendordeta0_.special_panel_access as special13_0_0_, vendordeta0_.starting_invoice_number as starting14_0_0_, vendordeta0_.tin_number as tin15_0_0_, vendordeta0_.updated as updated0_0_, vendordeta0_ .version as version0_0_ from test.vendor_detail vendordeta0_ where vendordeta0_.code=?

在会话 1 中从数据库获取的时间:162

Hibernate:选择 vendordeta0_.id 作为 id0_0_,vendordeta0_.banned_zip_pattern 作为banned2_0_0_,vendordeta0_.code 作为code0_0_,vendordeta0_.company_name 作为company4_0_0_,vendordeta0_.created 作为created0_0_,vendordeta0_.cst_number 作为cst6_0_0_,vendordeta0_.default_page 作为default7_0000 启用, vendordeta0_.max_invoice_number as max9_0_0_, vendordeta0_.name as name0_0_, vendordeta0_.next_invoice_number_reset_date as next11_0_0_, vendordeta0_.print_mock_invoice as print12_0_0_, vendordeta0_.special_panel_access as special13_0_0_, vendordeta0_.starting_invoice_number as starting14_0_0_, vendordeta0_.tin_number as tin15_0_0_, vendordeta0_.updated as updated0_0_, vendordeta0_ .version as version0_0_ from test.vendor_detail vendordeta0_ where vendordeta0_.code=?

在会话 2 中从数据库获取的时间:24

任何帮助将不胜感激!

0 投票
3 回答
8452 浏览

java - java.lang.ClassNotFoundException: javax.persistence.NamedStoredProcedureQuery - 休眠错误

在创建休眠会话工厂时,已抛出上述异常。

在此处输入图像描述

在应用程序 lib 文件夹中有 hibernate-jpa-2.1-api 和 javax.persistence.2.1.0。我可以在两个 jar 中看到 NamedStoredProcedureQuery 类。但是我收到了 classnotfoundexception 的运行时错误。有什么建议吗?