问题标签 [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.
java - 使用 Spring MVC 应用程序保持打开 Hibernate 会话
invalid property exception
当我试图在我的表单对象中绑定我的模型对象中的集合时,我得到了一个。我正在尝试一些技巧,现在我认为问题在于 spring MVC 的休眠会话,所以在控制器中我编辑了 create 函数,以便在我的表单保存之前,我尝试获取会话并获取 typesite 的列表,但仍然得到相同的错误:
我的映射有问题吗?
Sites.java 映射
TypeSites.java 映射:
控制器类:
Angularjs 代码:
JSP:在这里我调用另一个角度控制器来获取选择上的类型站点列表
我在浏览器中提交之前有这个:
typesites.typeSite
问题是:如果我将 select 的值更改为而不是typesites
这样,我无法提交嵌套对象
提交工作正常,但我有两个插入:表中的插入,以及具有新外键typesite
的表中的插入。site
java - 为什么 session.refresh(Object, LockMode.UPGRADE) 在休眠中被弃用?
我的要求:
我将 Quartzcron
用于触发目的,许多触发器在同一行上运行,但基于不同的列。所以当触发器需要更新其相关列时。触发首先从数据库中刷新(Session.refresh(object)
)属于它的对象(在触发器开始时选择对象),然后UPGRADE LOCK
在行级别获取。如果获得锁定成功,则更新列并用于session.update(object)
在数据库中更新。并释放锁。
session.refresh(Object, LockMode.UPGRADE)
使用 hibernate 避免脏更新的替代方法和有效方法是什么?
为什么它在 hibernate 中被弃用?
hibernate - 为什么 session.get(...) 解决 org.hibernate.NonUniqueObjectException?
我正在使用 Hibernate 4 Struts2 来尝试删除实体,引发以下异常:
我正在阅读,我以为我理解了这个问题,实际上这个异常非常具有描述性;会话中有多个具有相同标识符的对象,这是有问题的,因为 Hibernate 对给定主题执行事务,并且在某些时候来自我的两个对象的信息将不一致。我认为 hibernate 说“嘿,我在会话中有一个具有此 ID 的对象,但不是我给你的对象。”
我检查了我的代码并理解了问题,但是,在一篇文章中,我读到在尝试删除之前获取对象解决了问题,而且确实如此。我不明白为什么要解决这个问题,所以我想我还没有理解异常的原因。
我认为 session.get(...) 返回之前提取的对象,但我不确定。
方法是:
如果我取消注释该行并尝试删除返回 Session.get (...) 的对象,则不再发生异常。为什么?谢谢。
hibernate - Spring mvc 与 hibernate 和 jackson-hibernate-mapper 的集成测试:非法尝试将集合与两个会话相关联
异常“非法尝试将集合与两个会话关联”是众所周知的,并且当在两个不同的会话中引用同一实体时会发生这种情况。我有一个 spring mvc 集成测试,它发生在哪里,需要一个建议如何使它正常工作。
另外值得注意的是,我正在使用https://github.com/FasterXML/jackson-datatype-hibernate,这有助于在将域对象转换为 json 时避免 LazyInitializationException。我的猜测是它在内部打开 Hibernate 会话以获取惰性关系。
这是一个测试:
我的例外是:
那么,除了避免使用 jackson-hibernate-mapper 进行测试外,有什么方法可以避免这个问题?使用 DTO 和 Dozer 代替域对象不被视为解决方案(它将在未来完成,但不是现在)。
提前致谢
java - Hibernate - 第二个查询给出了未知的服务请求
我试图更好地理解 Hibernate 是如何工作的......
我有一个无法解决的问题。
当应用程序启动时,它会进行查询
最后我关闭当前会话。
然后,在它之后,我要完成第二个查询:
我打开一个新会话(第一个会话用方法关闭HibernateUtil.shutdown();
)
但我得到了,现在,
我不明白为什么,我关闭了第一个会话,然后又打开了一个新会话..
在每个查询上关闭会话是否正确
编辑 我正在尝试解决这个问题,但没有结果。
现在我有了第一个选择查询,一切顺利。它在应用程序启动时。
我不提交或刷新它。然后,使用应用程序,我有第二个查询,所以我 getCurrentSession 并尝试进行选择
应用程序停止,没有任何结果,我也不知道发生了什么,因为我无法设置休眠以使用 pi4j 登录...我使用休眠会话的方式有什么问题吗?
java - 事件发生时空指针异常
发生预定计时器事件时的异常.....当我使用 SetEvent se = new SetEvent(); se.startArchiveEvent(); 然后我得到以下异常....
以下是相关类
归档事件.java
设置事件.java
AbstractDao.java
json - Grails 3.1 json 渲染
我刚刚将我的应用程序从 grails 3.0.13 升级到 grails 3.1.1。在这样做的过程中,我遇到了一个关于 JSON 渲染的有趣问题。
我一直在使用自定义 JSON 封送拆收器:
当我尝试在 grails 3.1.1 中使用它时,我收到以下错误:
它发生在约会.resource?.name 行上。我尝试了不同的方法来解决这个问题,并成功地解决了一个用例,但现在我在另一个地方遇到了同样的错误。到处改变这一点似乎是错误的做法。
在我的域类中,我声明了这样的关系:
所以我认为我应该急切地加载资源和客户字段?(我以前在 grails 3.0.14 用户“客户懒惰:假”中,它工作。
但是,它现在不起作用。那么在 gorm 5 中会话的工作方式是否发生了变化?我需要做什么才能继续在 json 渲染中使用关系?
java - 休眠,更新包含集合的对象而不加载集合
我有一个项目,其中包含一组列,其中包含一组包含一组 TaskAssigness 的任务。
我正在尝试更新列标题而无需加载其任务集,但出现以下错误:
我有以下 hbm.xml :
项目.hbm.xml:
列.hbm.xml:
任务.hbm.xml:
TaskAsignee.hbm.xml:
我正在尝试以这种方式更新列的标题:
如果该列不包含任何任务,这可以正常工作。如果我尝试更新包含任务的列,则会收到以下错误消息:
如果我在更新项目之前获得任务和任务分配,我没有错误:
有没有办法更改我的列标题,然后更新项目而无需获取任务和任务分配者?我可以告诉休眠只是更新列而不是尝试更进一步。
java - 我应该在调用 session.evict(obj) 之前提交休眠事务吗
保存后何时应在休眠状态下提交事务。是在我调用 session.evict(obj) 之前还是之后。目前我的代码看起来像这样(只有必需的部分)。
有时,如果我在驱逐后提交,数据不会保存在数据库中。这是正确的编码方式吗?
hibernate - 使用 Session.buildLockRequest() 将实体重新附加到 EntityManager 是一种实用的解决方案吗?
我的问题比较简单:
我有一个实体,其中包含许多我不需要的懒加载集。现在我不想急切地加载所有内容,也不想拥有几种不同的 getSlimEntity()、getFullEntity()、getEntityForSpecialOccasion() 方法。
我想做的是默认使用“slim”版本,然后按需加载惰性内容。这种需求可能源于更改网页上显示“任务”实体的选项卡。新选项卡应显示任务的历史记录。但是,此选项卡不经常使用,因此我不急切地想要数据。
解决方案应该尽可能少地对数据库进行操作,因为数据库性能对我们来说是个问题。
我想出的一个可能的解决方案是使用 Session.buildLockRequest() 将任务“重新附加”到 EntityManager 并在我需要的 Set 上调用 Hibernate.initialize()。它看起来像这样:
这是一个苗条且相对易于理解的解决方案,数据库也没有更新或任何东西,只是查询有问题的 HistoryEntries。
现在我的问题是:这个解决方案可以使用吗?它会带来我看不到的任何问题吗?调用 buildLockRequest 实际发生了什么?另外,当多个用户查看同一个任务时会不会有问题?
// 编辑:正如所指出的,此解决方案使用可能与其他持久性提供程序不兼容的 Hibernate 特定调用,例如 EclipseLink 或 OpenJPA。由于这个项目只是内部的,这应该不是问题。