gpt4 book ai didi

spring - java.lang.ClassCastException : com. sun.proxy.$Proxy62 不能转换为 org.hibernate.engine.spi.SessionImplementor

转载 作者:行者123 更新时间:2023-12-04 15:11:33 24 4
gpt4 key购买 nike

我在使用 Spring 和 Hibernate Search 时遇到了问题。这是我的代码:

@Slf4j
@Repository
public class DefaultIndexBuilderDao implements IndexBuilderDao {

@PersistenceContext
@Getter
@Setter
private EntityManager entityManager;

@Override
public void rebuildIndex() {
try {
log.debug("Starting the reindex process...");
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(getEntityManager());
fullTextEntityManager.createIndexer().startAndWait();
log.debug("Reindex complete.");
} catch( InterruptedException e ) {
log.warn("Error rebuilding index: {}", e.getMessage(), e);
}
}
}
我越来越:
Caused by: java.lang.ClassCastException: com.sun.proxy.$Proxy62 cannot be cast to org.hibernate.engine.spi.SessionImplementor
at org.hibernate.search.impl.FullTextSessionImpl.<init>(FullTextSessionImpl.java:62)
at org.hibernate.search.impl.ImplementationFactory.createFullTextSession(ImplementationFactory.java:35)
at org.hibernate.search.Search.getFullTextSession(Search.java:45)
at com.domainwww.dao.DefaultIndexBuilderDao.rebuildIndex(DefaultIndexBuilderDao.java:38)
at com.domainwww.service.DefaultIndexBuilderService.rebuildIndex(DefaultIndexBuilderService.java:30)
at com.domainwww.beans.admin.IndexBean.reindex(IndexBean.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:107)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
... 57 more
这是来自我的 POM(属性)的版本(以防这是版本冲突)
<spring.version>5.3.1</spring.version>
<hibernate.version>5.4.24.Final</hibernate.version>
<hibernate.search.version>5.11.7.Final</hibernate.search.version>
这是 entityManager 的 bean:
<bean id="entityManager" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="net.xxxx,com.xxxx.dbmanager3.settings" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.dialect.storage_engine">innodb</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.connection.autocommit">false</prop>
<prop key="hibernate.search.default.directory_provider">filesystem</prop>
<prop key="hibernate.search.default.indexBase">/opt/xxx/lucene/indexes</prop>
</props>
</property>
</bean>
所以我知道 Spring 正在注入(inject)一个代理,那么我应该如何获取 FullTextEntityManager,解包似乎让我遇到了同样的错误?谢谢!

最佳答案

这通常是使用 Hibernate Search 时发生的情况 5.11.5.Final及以下版本为 Spring boot 2.4/Spring 5.3。见 https://github.com/spring-projects/spring-framework/issues/26090
鉴于 ClassCastException发生在 FullTextSessionImpl.java:62 ,我怀疑您实际上并没有使用 Hibernate Search 5.11.7.Final : 在 hibernate 搜索中 5.11.7.Final , 这一行只是一个 instanceof测试。在 5.11.5.Final在下面,这条线实际上是一个 Actor 。
我看你设置属性hibernate.search.version5.11.7.Final ,但是您是否在 POM 中的任何地方使用过此属性? Spring Boot 不管理对 Hibernate Search 的依赖,因此您需要自己在 <dependency> 中指定版本。标记。

关于spring - java.lang.ClassCastException : com. sun.proxy.$Proxy62 不能转换为 org.hibernate.engine.spi.SessionImplementor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65150809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com