问题标签 [spring-orm]
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 - 在代理对象上休眠没有会话错误
由于我不断遇到的 Hibernate Lazy Loading 错误,我正在努力编辑和更新嵌套对象。
在我的应用程序中:
- 我将图像集绑定到产品。
- 我使用格式化程序转换图像集以在选择框中使用,因此用户可以选择图像集。
- 如果表单成功,对象绑定并且关系正确保存,则效果很好。
- 但是,如果验证失败,每当 UI 层尝试访问嵌套对象值时,我都会收到可怕的延迟初始化/无会话错误!
所以我尝试编写一个方法来初始化相关对象作为解决方法:
该方法中的前 3 行有效(这些是单向的一对一),但第四行无效(这是多对一),它仍然表示没有代理。
我也尝试过制作所有 Eager fetch 类型。
这些都不起作用。
问题可能是我正在创建父对象,当出现验证错误时它不会保存到数据库中,但是无论出于何种原因,嵌套对象都是惰性代理对象,无论获取类型如何(请参阅下面的格式化程序) .
我怎样才能解决这个问题?
这是格式化程序组件:
调用 Hibernate.initialize(variant.getImageSet()) 行时的堆栈跟踪:
org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是 org.hibernate.LazyInitializationException: 无法初始化代理 - 没有会话 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:第863章725) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.springframework.web.filter.HiddenHttpMethodFilter。
相关对象关系:
spring - 在 applicationContext.xml 中声明持久 JPA 实体?
所以,这就是我想做的。有些像这样我已经能够在 openerp 中找到。
我想,我可以简单地声明一个 bean,它也是一个 JPA 持久实体,例如:
例子.java:
当然,这个类已经包含了 JPA 持久性注入,因此它可以从 java 代码中作为一个普通的 JPA 支持的持久性类来处理。我的目标是从 Spring 声明它的一些实例applicationContext.xml
:
应用程序上下文.xml:
我认为这真的很有趣:
- 必须从 Spring 初始化中调用新创建实例的
persist()
方法,但前提是它在 DB 中不存在。 - 如果存在,则应从持久 JPA 存储中加载该实例。
有可能吗?该任务是否有示例代码?:-)
spring - org.hibernate.hql.internal.ast.QuerySyntaxException:EdbmsEmployee 未映射 [来自 EdbmsEmployee edbmsEmployee where edbmsEmployee.employeeid=?]
我正在研究 spring 3 hibernate 4 和 ORM 的新手。所以低于异常请帮助。
我知道已经问过这个例外的问题,但在我的情况下,我在尝试这些解决方案后仍然面临这个问题。
下面是我的实体类
这是我的 daoimplementaion 类
当我试图访问 dao 时,我得到了 Exception -
我试图从 3 天开始解决它,但没有运气,
我正在导入正确的实体类 javax.persistence.Entity; 并在 HQL 中使用实体类名称“来自 EdbmsEmployee edbmsEmployee where edbmsEmployee.employeeid=?” (代码在此行之前运行良好,仅在此行给出异常)
在我的实体类中,我正确使用了所有注释。那么为什么我会收到此异常“EdbmsEmployee 未映射”。
我搜索了解决方案,发现如果我们导入错误的实体类或者我们在 HQL 中使用了表名,就会出现这个异常。在我的两个都是正确的。而且我相信在使用这些注释时不需要在 xml 文件中映射我的实体类。
spring - Spring Hibernate - 无法为当前线程获取事务同步会话
我用 spring + hibernate 创建了一个应用程序,但我总是得到这个错误。这是我第一个使用休眠的应用程序,我阅读了一些指南,但我无法解决这个问题。我在哪里做错了?
这是我的应用程序的代码
学生.java
学生道.java
StudentDAOImpl.java
主应用程序.java
springConfig.xml
sql
java - 在 Spring MVC 中使用 ScrollableResults-backed Stream 作为返回类型时遇到问题
重要提示:这已被接受为Spring 问题,目标修复版本为 4.1.2。
我的目标是在从 Hibernate 生成 HTTP 响应时实现 O(1) 空间复杂度ScrollableResults
。我想保留标准机制,在该机制中MessageConverter
分派 a 以处理从 a 返回的对象@Controller
。我已经设置了以下内容:
MappingJackson2HttpMessageConverter
丰富了JsonSerializer
处理 Java 8 的 aStream
;ScrollableResultSpliterator
需要包装ScrollableResults
成的自定义Stream
;OpenSessionInViewInterceptor
需要保持 Hibernate 会话在MessageConverter
;- 设置
hibernate.connection.release_mode
为ON_CLOSE
; - 确保 JDBC 连接具有必要的 ResultSet 可保持性:
con.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT)
.
此外,我需要一个支持这种可保存性的数据库。PostgreSQL 就是这样一个数据库,我对此没有任何问题。
我遇到的最后一个绊脚石是HibernateTransactionManager
事务提交时使用的策略:除非底层会话是“休眠管理的”,否则disconnect()
它将关闭我的光标以及其他所有内容。这样的策略在一些特殊情况下很有用,特别是“会话范围的会话”,这与我的要求相去甚远。
我已经设法通过一个糟糕的 hack 来解决这个问题:我不得不用一种方法覆盖有问题的方法,该方法实际上是原始方法的复制粘贴,除了已删除的disconnect()
调用,但它必须诉诸反射来访问私有 API。
由于我认为我的方法是生成 ResultSet 支持的响应的“正确方法”,并且由于 Streams API 使这种方法非常方便,所以我想以受支持的方式解决这个问题。
有没有办法在没有我的黑客的情况下获得相同的行为?如果不是,那么通过 Spring 的 Jira 请求这是一件好事吗?
jpa - 如何阻止 spring roo 错误地更新 SQLResultSetMapping 注释?
我已经使用 Spring Roo 有一段时间了。我真的很喜欢它如何消除平凡的编程并让您真正专注于应用程序的逻辑。然而,我最近发现自己在与运行时作斗争,因为它不断更新我的 JPA 注释并删除属性名称。
我正在调用一个存储过程,在其中计算派生值(从用户当前位置到场地的距离)并尝试将其存储在 JPA 记录对象中。我已经能够让代码成功工作,如这个问题SqlResultSetMapping columns as and entities中所述
我设法通过禁用 Spring Roo shell 然后在重新编译我的项目之前手动更新注释来做到这一点。
但是,当我在运行 Roo shell 的 spring 源工具套件中编写此逻辑时,Roo 运行时总是从这里更新注释:
@SqlResultSetMapping(name = "findVenuesByDistanceMapping", 实体 = { @javax.persistence.EntityResult(entityClass=model.VenueRecord.class) }, 列 = { @javax.persistence.ColumnResult(name="distance") })
对此:
@SqlResultSetMapping(name = "findVenuesByDistanceMapping", 实体 = { @javax.persistence.EntityResult(model.VenueRecord.class) }, 列 = { @javax.persistence.ColumnResult("distance")})
您会注意到它已删除注释属性标识符。然后,当我尝试编译该类时,我得到了一个异常。除非我完全离开 Spring Roo,否则似乎没有办法解决这个问题。这将令人失望,因为我已经使用了几个月,并且最近才发现一个我似乎无法解决的问题。
有没有人对我如何解决这个问题有任何建议?也许甚至修改 spring roo 代码以识别正确的注释格式?
java - Spring - 从 DAO-Service 架构迁移到 JPA
我有使用 Spring 编写的 Web MVC。我使用了单独的 dao 和 service 类。
我的旧代码:
现在我想试试 Spring JPA。但是我无法将我的测试项目从 dao-service 重写为 Spring JPA。
github上有项目源https://github.com/martin159/springjpa
运行项目后,出现以下错误:
我在 Spring JPA 上花了很多时间,但我仍然无法修复它。
你知道我做错了什么吗?
spring - 如何使用 XML 配置在 Spring 中将多个包传递给 packagesToScan 属性
假设我在名为M 1 (com.test1) 和M2 (com.test2) 的不同模块中有两个包com.test1和com.test2。
现在在以下示例中,我配置了module1包。
但我想在packagesToScan属性中配置 Module2 包。如何配置。
spring-mvc - 在带有 JPA 的 Spring MVC 中使用 @PersistenceContext 时获取空指针异常
我正在尝试创建一个简单的基于库存的项目。我是 Spring 新手,我按照链接http://www.objectdb.com/tutorial/jpa/eclipse/web来创建项目。但是我无法运行该项目,因为@PersistenceContext 没有在我的代码中注入实体管理器。请在下面找到我的代码片段
POM.xml
网络信息
spring-servlet.xml
持久性.xml
道
例外
我无法确定代码中有什么问题。我在PersistenceContext EntityManager 注入 NullPointerException中也提到过,但 EntityManagerFactory 也没有被注入。
spring - 当应用程序尝试在数据库中执行查询时“未配置 CurrentSessionContext”
在我当前的spring-boot项目中,当我尝试在数据库中进行查询时,通过我的dao类中的这个方法(这是我在这一步开发中使用的唯一方法):
我收到此错误:
从此服务类调用此方法:
这是我的 application.properties 文件:
我有这个配置类来设置 sessionFactory bean:
任何人都可以看到我在这里缺少什么?