带有多租户问题的Hibernate Search 6,HSEARCH000520,HSEARCH600029 [英] Hibernate Search 6 with multitenancy issue, HSEARCH000520, HSEARCH600029

查看:87
本文介绍了带有多租户问题的Hibernate Search 6,HSEARCH000520,HSEARCH600029的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Hibernate测试Hibernate Search 6多租户(请参考

I'm testing Hibernate Search 6 multitenancy with Hibernate (referred to this link) and got error message "HSEARCH000520: Hibernate Search encountered failures during bootstrap", with additional detail, "HSEARCH600029: Invalid backend configuration: index 'Users' requires multi-tenancy but no multi-tenancy strategy is set".

我申请了我的Users实体.这是Users实体类.

I apply to my Users entity. Here is the Users entity class.

@Indexed
public class Users implements Serializable {

    private static final long serialVersionUID = 1L;
 

    @JsonbTransient
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Integer id;
    @FullTextField(analyzer = "name", projectable = Projectable.YES)
    @Size(min = 3, max = 50)
    @Column(name = "username")
    private String username;
    @Size(max = 50)
    @Column(name = "email")
    private String email;
    
    ...
    
}

和persistance.xml

And persistance.xml

  <persistence-unit name="jakartaEEPU" transaction-type="JTA">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <jta-data-source>java:app/jdbc/myDS</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
    <properties> 
      <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform"/>
      ...
      <property name="hibernate.cache.use_query_cache" value="true"/>
      <property name="hibernate.cache.use_second_level_cache" value="true"/>
       
      <property name="hibernate.search.backend.directory.root" value="/home/peter/hbsearch/"/>
      <property name="hibernate.search.backend.io.commit_interval" value="500"/>
      <property name="hibernate.search.backend.directory.type" value="local-filesystem"/>
      <property name="hibernate.search.backend.analysis.configurer" value="com.hibernateLuceneSearch.AnalyzerConfigurator"/>
      <property name="javax.persistence.schema-generation.database.action" value="none"/>
      <property name="hibernate.multiTenancy" value="DATABASE"/>
      <property name="hibernate.tenant_identifier_resolver" value="com.dao.multitenancy.DatabaseTenantResolver"/>
      <property name="hibernate.multi_tenant_connection_provider" value="com.dao.multitenancy.DatabaseMultiTenantProvider"/>
    </properties>
  </persistence-unit>

此实体类中是否缺少或不正确?

Is there any missing or incorrect in this entity class?

推荐答案

您需要在后端明确选择多租户策略.只需将此属性添加到您的 persistence.xml :

You need to explicitly pick a multi-tenancy strategy in your backend. Just add this property to your persistence.xml:

      <property name="hibernate.search.backend.multi_tenancy.strategy" value="discriminator"/>

请参见 https://docs.jboss.org/hibernate/stable/search/reference/zh-CN/html_single/#backend-lucene-multi-tenancy

编辑:我创建了 HSEARCH-4163 来尝试更改此毫无帮助的错误消息.

EDIT: I created HSEARCH-4163 to try to change this admittedly unhelpful error message.

这篇关于带有多租户问题的Hibernate Search 6,HSEARCH000520,HSEARCH600029的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆