当前位置: 首页 > 知识库问答 >
问题:

集成到游戏框架(JPA)中的Hibernate搜索

苗学民
2023-03-14

我添加了依赖项

"org.hibernate" % "hibernate-entitymanager" % "4.3.8.Final",
"org.hibernate" % "hibernate-search-orm" % "5.2.0.Final",

我已经有了Entitymanager,它工作得很好。

然后我添加了Hibernate搜索属性:

<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <non-jta-data-source>DefaultDS</non-jta-data-source>
    <class>models.User</class>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="hibernate.hbm2ddl.auto" value="update"/>

        <property name="hibernate.search.default.directory_provider"
                  value="filesystem"/>

        <property name="hibernate.search.default.indexBase"
                  value="/var/lucene/indexes"/>

    </properties>

</persistence-unit>
        <property name="hibernate.search.default.directory_provider"
                  value="filesystem"/>

        <property name="hibernate.search.default.indexBase"
                  value="/var/lucene/indexes"/>
@Entity
@Indexed
public class User extends Model {

     @Field(index= Index.YES, analyze= Analyze.YES, store= Store.NO)
     public String firstname;
     @Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO)
     public String lastname;
}
play.api.UnexpectedException: Unexpected exception[AbstractMethodError: org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.getConfigurationValues()Ljava/util/Map;]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:170) ~[play_2.11-2.3.7.jar:2.3.7]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:130) ~[play_2.11-2.3.7.jar:2.3.7]
    at scala.Option.map(Option.scala:145) ~[scala-library-2.11.4.jar:na]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:130) ~[play_2.11-2.3.7.jar:2.3.7]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:128) ~[play_2.11-2.3.7.jar:2.3.7]
Caused by: java.lang.AbstractMethodError: org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.getConfigurationValues()Ljava/util/Map;
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:404) ~[hibernate-core-4.3.9.Final.jar:4.3.9.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844) ~[hibernate-entitymanager-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75) ~[hibernate-entitymanager-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54) ~[hibernate-entitymanager-4.3.8.Final.jar:4.3.8.Final]
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63) ~[hibernate-jpa-2.0-api-1.0.1.Final.jar:1.0.1.Final]

共有1个答案

暴德运
2023-03-14

从5.0.0到5.3.0的所有Hibernate搜索版本都与任何Hibernate ORM版本4.3.x(4.3.0到4.3系列的最新版本,目前为4.3.10)兼容。

但是您必须始终为hibernate-entitymanager和hibernate-orm选择完全相同的版本,因为它们是一起发布的,不应该被分割和混淆。

从stacktrace来看,您似乎已经在使用Hibernate ORM版本4.3.9(hibernate-core-4.3.9.final.jar),所以您不应该使用hibernate-entitymanager-4.3.8.final,而是可以将EntityManager也升级到4.3.9,或者将hibernate-core降级到4.3.8,或者两者都升级到4.3.10(可能是最好的选择)。

Hibernate兼容规则

通常,规则是hibernate-core和hibernate-entitymanager需要处于完全相同的版本;然后查阅Hibernate Search文档,以了解它与哪个范围兼容。

这些信息可以在自述文件、参考文档或通过pom.xml(还有许多能够解释Maven元数据的工具)中找到。

 类似资料:
  • nebula3 是一个游戏引擎和开发框架,可移植的特性支持多平台,包括 iPhone。 http://code.google.com/p/nebula3-engine/

  • 本项目是win32下大型客户端游戏的游戏辅助开发框架,由于它集成并包含了游戏辅助开发的各方面功能,称本项目为win32辅助开发的组件也可。 内含具体项目有fifa online3、疾风之刃、怪物猎人online、流放之路等,也有辅助帐号验证服务器,帐号查寻与管理工具,特征码识别,资源文件系统等。 本人现已转型,特发布此项目,旨在分享一份只供参考的多年工作经验与心血,若本项目中有些您认为闪亮的设计、

  • 环境:Spring 4,Hibernate 4,JPA 如果调用builderdao.delete(实体),我们会在线程“main”org.springframework.dao.invaliddataaccessapiusageException中得到异常:只读模式(flushmode.manual)中不允许写操作:将会话转换为flushmode.commit/auto或从事务定义中删除“rea

  • 问题内容: 我正在使用最新的稳定Spring版本()。 将Hibernate从5.1升级到5.2,并将依赖项更改为适当的hibernate文档后:https : //github.com/hibernate/hibernate- orm/wiki/Migration-Guide—5.2 我没有收到任何编译错误,但是我的所有测试都因以下堆栈跟踪而失败: 问题答案: 中增加了支持,其稳定版本将于下周推

  • 本文向大家介绍Unity实现游戏存档框架,包括了Unity实现游戏存档框架的使用技巧和注意事项,需要的朋友参考一下 最近重构了一下我的存档框架。我在这里对实现方法进行简单的解析。注意这里主要演示算法,所以,效率上并不是最佳。一个游戏中,可能有成百上千个物体需要存储,而且有几十种类型,接下来就用一个简单的例子来解释。一个很简单的例子,有一个Unit(单位)类型,有一个Inventory(背包)类型,

  • 问题内容: 我已经开发了一个Spring / JPA应用程序: 服务,存储库和域层即将完成 。 该 所缺的只是层是网络层 。我正在考虑将Playframework 2.0用于Web层,但不确定是否可以 在Playframework 2.0类中注入/使用spring bean 。 这可能吗?如果可以,怎么办? 问题答案: 您可以。已针对Play 2.5.x更新: https://github.com