问题标签 [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.

0 投票
3 回答
7524 浏览

java - 与 Spring 一起使用时的休眠 sessionFactory.getCurrentSession()

我试图将 Hibernate 与我的 Spring 应用程序上下文连接起来。我成功地连接了一个 SessionFactory,但是当我尝试调用 getCurrentSession 时,我看到以下错误:

我正在配置数据源会话工厂和事务管理器。我还指定事务处理将由注释驱动

这是我的上下文 xml:

这是我看到错误的类:

调用时 sessionFactory 不为空,而是出现上述错误。如果我使用 openSession 一切正常,但我知道这不适用于事务。

有任何想法吗?谢谢

0 投票
1 回答
2581 浏览

spring - 通过 Spring Auditing 获取更改的字段

我可以以某种方式使用spring Auditing来获取实体的列表更改字段及其旧值,新值吗?

我试图获取实体的更新字段列表及其日志的旧值和新值。我在更新之前使用 getDeclaredFields 比较旧实体和新实体,它可以工作。但仍然想知道是否有一些标准和更简单的解决方案。我正在使用 spring 和 hibernate 来管理我的实体。经过研究,我发现可以通过在更新事件上添加侦听器并使用事件中的 getDirtyProperties 来为我的目的使用休眠会话。但据我了解,它需要休眠事务管理器,我已经在使用 JpaTransactionManager 并且无法更改它。

然后我被告知这个春季审计功能 http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/#jpa.auditing 问题是它是否可以提供类似 getDirtyProperties 的东西? 或者也许还有其他解决方法?因为不需要创建新表,如果我做对了,spring 审计需要在数据库中存储审计数据。

0 投票
1 回答
614 浏览

spring - 如何将 Spring 托管的 SessionCustomizer 放入 EclipseLink 配置中

我在一个春季项目中使用 eclipselink。我的配置的一个必要部分是配置我的 id-generator 的 SessionCustomizer(Twitter 的 Snowflake)。

是否可以使用 spring 处理此定制器的创建,以便我可以使用依赖注入并使用属性占位符?

我为定制器找到的唯一示例总是在持久性 xml 中配置类。

到目前为止,这是我的配置:

0 投票
4 回答
3419 浏览

java - 使用 JPA/Hibernate 持久化大型对象图时出现异常

我们正在创建一个由 JPA 支持的新 Web 应用程序来替换旧的 Web 应用程序。作为迁移的一部分,我们将旧应用程序的数据库转换为一个新的、更复杂的、JPA 管理的数据库。

因此,我编写了一个“脚本”,将旧数据库转换为一组 JPA 实体,然后保存它们。它是这样工作的:

  1. 根据领域模型的依赖关系创建转换顺序
  2. 对于每个实体
    1. 对遗留数据库执行数据库查询
    2. 将每个获得的表行的新对象存储在内存中的列表中
  3. 以与转换相同的顺序迭代生成的列表,并持久化每个实体。

现在,前两个步骤运行良好。坚持,但是我得到一个例外。当一个实体与另一个实体有关系时会发生异常。例如,如果我们的一个实体是 a Book,而另一个实体将Chapter定义与 的@ManyToOne(optional=false)关系Book。在持久化章节后,它会抛出异常java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException: Not-null property references a transient value - transient instance must be saved before current operation: models.Chapter.book -> models.Book

当然,这表明这本书的状态有问题:它似乎要么没有设置,要么还没有被持久化。但是,我可以验证Book在 的转换中是否正确设置了Chapter,并且我还可以验证在类型实体Book被持久化EntityManager 之前,所有类型的实体都Chapter被持久化了。显然,我的 JPA 提供程序没有按预期运行,并且由于某种原因并没有真正持久化我的Book对象。

什么解决方案可以让我保存已转换到数据库的整个对象图?我使用 Hibernate 作为我的 JPA 提供程序,我还使用 Spring 3.1 来注入依赖项和EntityManagers。

编辑 1:一些附加信息:我再次验证 entityManager.persist() 在每个书籍对象上调用 entityManager.persist()之前在章节上调用。但是,book 对象的 id 仍然为 null,这意味着它没有正确持久化。尽管没有使用事务,但数据库也仍然是空的。

编辑2:因为我认为从上面的文字中看不清楚:书和章节的故事只是一个例子任何引用另一个实体的实体都会发生这种情况。这看起来好像我没有正确使用 JPA/Hibernate,而不是没有正确设置我的实体的值。

编辑 3:核心问题似乎是,尽管正确地坚持 Book,拥有所有正确的注释, book.getId() 仍然为空。基本上,Hibernate 并没有在我的实体上设置 ids 在持久化它们之后,当我以后需要使用这些实体时会导致问题。

0 投票
3 回答
45945 浏览

spring - java.lang.ClassNotFoundException:org.springframework.orm.hibernate4.LocalSessionFactoryBean

我是 Spring 新手,这是我的第一个示例(JSF 2、PrimeFaces 3、Spring 和 Hibernate 集成),这是pom.xml:

当我运行项目时,出现此错误:

0 投票
3 回答
12303 浏览

spring - JPA 2.0与 javax.persistence.sharedCache.mode

使用 Spring 3.2.0、Eclipselink 2.5.0-M9

当 persistence.xml 包含:

然后,如果我在运行时通过 emf.getProperties() 检查 EntityManagerFactory,则未设置此属性。

但是,如果我把它放在我的 Spring entityManagerFactory 配置中:

然后我可以从 emf.getProperties() 检索属性

此外,似乎在使用 spring 配置时,实际上并未启用共享缓存。这让我相信我没有在弹簧容器中正确设置它。

想法?

0 投票
1 回答
6996 浏览

java - Hibernate 对象未映射异常

从我的数据库中检索所有组的 HQL 语句存在一些问题。我得到以下异常:

以下是相关代码:

春天hibernate.xml:

组:包com.youthministry.domain;

以防万一这里是这个项目的 git repo:http: //github.com/dmcquillan314/YouthMinistryHibernate

让我知道是否需要有关此错误的任何其他信息,我将编辑该帖子。

任何想法都非常感谢。提前致谢。

0 投票
1 回答
7458 浏览

java - 重复条目异常休眠

我在将条目存储到我的数据库中时遇到了一些问题。我正在使用以下层次结构:

我有一个父类 PageContent 和两个子类 TextEntry 和 Image 但是当我尝试存储多个 PageContent 实体时,我得到以下异常:

HTTP 状态 500 - 请求处理失败;嵌套异常是 org.springframework.dao.DataIntegrityViolationException: Duplicate entry '2' for key 'groups_groupId'; SQL [不适用];约束[空];嵌套异常是 org.hibernate.exception.ConstraintViolationException: Duplicate entry '2' for key 'groups_groupId'

这是相关的类

组.java:

页面内容.java

图像.java

文本输入.java

我试图解决这个问题,我的预感是它与我正在使用的 CascadeType 有关,我曾认为在删除时将其更改为 Cascade,而不是删除了 Group Entity 的重复插入,但是我仍然收到上述例外。

这是 git repo 的链接:http: //github.com/dmcquillan314/YouthMinistryHibernate

提前感谢任何帮助。

以下是所有相关数据库表的创建表脚本:

0 投票
1 回答
270 浏览

spring - 春天结合休眠

我遇到一个问题,当我在没有 Spring 的情况下使用 hibernate 时,我总是在 hibernate.cfg.xml 中编写以下配置:

这将seesion绑定到线程。但是当我将hibernate与Spring一起使用时,我不知道如何实现相同的配置,我也在applicationContext.xml中编写了它,但它不起作用。抛出异常:

org.hibernate.HibernateException: No Hibernate Session bound to thread,并且配置不允许在这里创建非事务性会话

其实我只是想将session绑定到线程,然后我可以使用sessionfactory的getcurrentSession方法,有没有人和我遇到同样的问题,如何解决。非常感谢

0 投票
2 回答
320 浏览

spring - 在 Wicket IResource 中通过 JPA 访问数据库?

我想实现一个DynamicImageResource将安装在 Wicket 6.7/Spring 3.2/JPA 2 应用程序中的。这DynamicImageResource将根据输入参数检索信息并创建响应。

问题是:我如何从内部访问数据库DynamicImageResource.getImageData(...)?我无法enter code here通过@SpringBean. 我最后的手段是静态 PersistenceContextFactory。

有更好的想法吗?还是最佳实践?