首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MultiTenancy进行Hibernate搜索

使用MultiTenancy进行Hibernate搜索
EN

Stack Overflow用户
提问于 2014-12-30 19:56:58
回答 1查看 924关注 0票数 2

我的要求是每个租户的索引,我已经有hibernate配置为MultiTenant,我需要索引每个租户的数据库到不同的索引。我已经看过dynamicSharding策略了..但是需求是动态的。它可以有n个分片,而不需要任何关于每个租户存在的预先信息。甚至我的索引器也应该以这样的方式工作。每当它找到获取索引的hibernate请求时,它都应该首先对该租户进行索引,然后再对其进行搜索。

我怎么才能做到..??

谁能给我举个例子。请不要提供hibernate文档链接...或者甚至是hibernate搜索的Jboss文档链接。

EN

回答 1

Stack Overflow用户

发布于 2015-04-16 22:29:06

要在特定租户上建立索引,您应该在应用程序上下文中添加Entitymanager部分的hibernate search属性,例如:

代码语言:javascript
复制
<bean depends-on="dataSource" id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="databasePlatform" value="org.hibernate.dialect.SQLServerDialect" />
            <property name="generateDdl" value="true"></property>
            <property name="showSql" value="true" />
        </bean>
    </property>
    <property name="packagesToScan" value="xxx.xxxx..xxx." />
    <property name="persistenceUnitName" value="xxxxxx" />
    <property name="dataSource" ref="dataSource" />
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
            <prop key="hibernate.search.default.directory_provider">filesystem</prop>
            <prop key="hibernate.search.default.indexBase">C:\xxxxx\indexes</prop>

        </props>
    </property>
</bean> 

现在,您必须使用org.hibernate.Session来标识您的租户,以执行对特定租户的搜索,如下所示:

代码语言:javascript
复制
EntityManager manager = managerFactory.createEntityManager();

SessionImpl i = (SessionImpl) manager.getDelegate();
SessionFactory session = i.getSessionFactory();

Session s = session.withOptions().tenantIdentifier(xxxxx).openSession();

FullTextSession fullTextSession = org.hibernate.search.Search.getFullTextSession(s);
return fullTextSession; 

这样每次搜索都会使用你提供的特定租户,但对我来说,你似乎有另一个问题,那就是如何获取租户,在我的例子中,我使用url来标识租户,如果你有任何用户选择使用的租户,在需要时获取静态变量中的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27705059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档