【问题标题】:Configuring Compass with Annotated Hibernate使用带注释的 Hibernate 配置 Compass
【发布时间】:2010-09-20 16:30:10
【问题描述】:

我正在将 Hibernate 用于基于 Java 的 Web 应用程序,并希望通过 Compass 添加全文搜索。 Compass 应该支持这一点,但无法提供任何有用的入门指南。

我发现我必须用 @Searchable 和各种 @SearchableXXX 变体注释我的实体,并通过 HibernateHelper.getCompass(sessionFactory) 在我的服务代码中访问 Compass。

我最终得到一个 HibernateException,说“未配置指南针事件侦听器,请检查参考文档和应用程序的 hibernate.cfg.xml”。

reference documentation 再次提示和 hibernate.cfg.xml,而我使用 Spring 的 AnnotationSessionFactoryBean 配置 Hibernate。对于这种情况,文档中提到:“如果使用 Hibernate Annotations 或 Hibernate EntityManager (JPA),只需将 Compass jar 文件放到类路径中即可启用它(确保类路径中没有 Hibernate Search,因为它使用相同的事件类名称)。”这对我不起作用。

有什么我缺少的想法或入门的好资源吗?

【问题讨论】:

    标签: java hibernate spring lucene compass-lucene


    【解决方案1】:

    我想知道您为什么选择 Compass 来休眠。我们查看了 Compass 和 Hibernate-Search,我们选择了后者,因为它具有出色的集成性。

    您可以使用与使用 HQL 或 Critera 执行 SQL 数据库完全相同的方式查询测试索引。

    如果您使用的是 iBatis 或 JDBC,那么 Compass 当然会更合适。 Hibernate 搜索更适合 JTA。

    是我还是 Compass 明显缺乏活动?

    【讨论】:

      【解决方案2】:

      查看的最佳资源是检查随指南针分发提供的宠物诊所示例(带有依赖项)。如果默认情况下未配置监听器,则您必须设置 EventListener。

      【讨论】:

        【解决方案3】:

        Compass 有两种模式与 Hibernate 集成。嵌入式模式基本上意味着您需要将 Compass jar 放入应用程序(并且可能需要配置事件侦听器,具体取决于 Hibernate 版本),然后您至少需要在配置 Compass 的 Hibernate cfg 文件中进行属性配置索引位置。这是link link for more information

        另一个选项是通过创建 CompassGps 和 Hibernate 设备(使用 Hibernate SessionFactory 初始化)来配置 Compass 以在外部与 Hibernate 集成。 Hibernate 设备会自动向 Hibernate 注册相关的监听器。更多信息可以找到link here

        【讨论】:

        • 我的问题中已经有了那个确切的链接,自从我发布问题以来,它看起来并没有太大变化。真的没有帮助。 Hibernate-with-Annoations 设置的完整示例会很有用。
        猜你喜欢
        • 1970-01-01
        • 2012-08-07
        • 2011-11-01
        • 2015-04-30
        • 2014-03-19
        • 2011-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多