org.springframework.data.repository 可以被 Hibernate 管理吗?

米先生

我一直在使用Hibernate Search来查询数据库条目。对于我的大多数情况,我使用 cron 作业来构建我的索引,但对于一个特定情况,我需要索引在实体更改时立即更新。我注意到虽然springframework.data.repository正确更新了数据库中的数据,但 Hibernate 不会执行索引中相应实体的更新。

当我更改我的实现以使用实体管理器进行此事务(使用entitymanager.persist(x)等...)时,它也会正确更新索引。

我喜欢 crud 存储库的简单性并且我想保持一致,那么有没有办法让 hibernate 使用 crud 存储库知道这个更改?

罗迪埃

Spring Data 提供了一个基于 JPA 的 CRUD 存储库,它将依赖 JPA(Hibernate ORM)来执行 CRUD 操作,从而允许 Hibernate Search 自动更新索引。您不需要自己实现对entityManager.persist()等的调用

如果你的CRUD存储库并没有使用JPA(Hibernate的ORM),那当然(如你注意到)Hibernate Search的不会察觉的变化并不会更新索引。

您没有具体说明您的 CRUD 存储库是如何实现的,所以我想您正在使用Spring Data JDBC实现?这是我所知道的唯一一种允许您在不依赖 JPA(Hibernate ORM)的情况下在 Spring Data 中更新数据库的方法。

我建议至少对于需要自动、动态索引的实体切换到 Spring Data JPA 实现。

如果这真的不是一个选项,我想您可以以某种方式插入 Spring Data JDBC(覆盖 CRUD 方法,或者使用事件侦听器),以便每次更改实体时:

然而,我怀疑性能会非常好。特别是,当更改仅涉及未编入索引的属性时,您将错过 Hibernate Search 中的一些优化,这些优化可避免重新索引。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spring 启动 org.springframework.data.repository.config.BootstrapMode

无法解析 org.springframework.data.repository.Repository 类型。它是从所需的 .class 文件间接引用的

java.lang.NoSuchMethodError:org.springframework.data.jpa.repository.config.JpaRepositoryConfigExtension.registerIfNotAlreadyRegistered

如何从org.springframework.data.repository.CrudRepository后代中取消代理子对象

在运行测试时面临'NoClassDefFoundError:org / springframework / data / repository / config / BootstrapMode'问题

java.lang.NoSuchMethodError: org.springframework.data.repository.config.RepositoryConfigurationSource.getAttribute

org.springframework.orm.hibernate4.HibernateOptimisticLockingFailureException

引起原因:org.hibernate.MappingException:无法确定org.springframework.data.elasticsearch.core.geo.GeoPoint的类型

我可以使用org.springframework.messaging.Message获得JMSXDeliveryCount和JMSDestination吗

我可以将org.springframework.security.core.userdetails.User扩展为程序中的实体吗?

遇到问题“在春季启动应用程序中找不到类[org.springframework.data.jdbc.repository.config.JdbcConfiguration]

无法解析org.springframework.data.repository.query.QueryByExampleExecutor类型。从所需的.class文件间接引用它

我可以在Spring Data Repository中使用Mongock吗?

org.springframework.data.redis.serializer.SerializationException

org.springframework.data.cassandra.CassandraUncategorizedException

Spring + Hibernate + Gradle-> org.springframework.beans.factory.BeanCreationException

哪个JAR包含org.springframework.orm.hibernate.HibernateTransactionManager?

NoClassDefFoundError org.springframework.orm.hibernate4.HibernateTemplate $ 35

为什么org.springframework.boot不能导入,而org.springframework.web可以导入?

Spring 4 + Hibernate 5 = org.springframework.orm.jpa.EntityManagerHolder无法转换为org.springframework.orm.hibernate5.SessionHolder

ClassCastException:org.springframework.orm.jpa.EntityManagerHolder无法转换为org.springframework.orm.hibernate5.SessionHolder

我收到此错误org.springframework.orm.jpa.EntityManagerHolder无法转换为org.springframework.orm.hibernate5.SessionHolder

使用hibernate和spring-boot-data-jpa将spring-boot从2.1.x更新到2.2.x之后,org.springframework.dao.DataIntegrityViolationException

Java,Spring,Hibernate无法找到org.springframework.orm.hibernate3.LocalSessionFactoryBean

org.springframework.data.domain.PageImpl无法转换为

org.springframework.data.domain.Sort为什么出错

导入org.springframework.data无法在gradle中解析

引起:java.lang.NoClassDefFoundError: org/springframework/data/convert/CustomConversions

无法导入org.springframework.data.rest.webmvc.ResourceNotFoundException;