微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有多租户问题的 Hibernate Search 6、HSEARCH000520、HSEARCH600029

如何解决具有多租户问题的 Hibernate Search 6、HSEARCH000520、HSEARCH600029

我正在使用 Hibernate 测试 Hibernate Search 6 多租户(参考 this link)并收到错误消息“HSEARCH000520:Hibernate Search 在引导过程中遇到故障”,以及更多详细信息, “HSEARCH600029:后端配置无效:索引‘用户’需要多租户,但未设置多租户策略”。

我申请我的用户实体。这是用户实体类

@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

  <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>

这个实体类是否有遗漏或不正确的地方?

解决方法

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

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

https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#backend-lucene-multi-tenancy

编辑:我创建了 HSEARCH-4163 来尝试更改这个公认无用的错误消息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。