Hibernate Search 6 ที่มีปัญหาการเช่าหลายรายการ HSEARCH000520, HSEARCH600029

ฉันกำลังทดสอบ Multitenancy Hibernate Search 6 กับ Hibernate (อ้างถึง ลิงก์นี้) และได้รับข้อความแสดงข้อผิดพลาด HSEARCH000520: การค้นหาแบบไฮเบอร์เนตพบความล้มเหลวในระหว่างการบูตสแตรป พร้อมรายละเอียดเพิ่มเติม HSEARCH600029: การกำหนดค่าแบ็กเอนด์ไม่ถูกต้อง: ดัชนี 'ผู้ใช้' ต้องการการเช่าหลายรายการ แต่ไม่มีการกำหนดกลยุทธ์การเช่าหลายรายการ

ฉันสมัครกับหน่วยงานผู้ใช้ของฉัน นี่คือคลาสเอนทิตี Users

@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;
    
    ...
    
}

และ Peristance.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>

มีสิ่งใดหายไปหรือไม่ถูกต้องในคลาสเอนทิตีนี้หรือไม่


person PeterL355    schedule 21.02.2021    source แหล่งที่มา


คำตอบ (1)


คุณต้องเลือกกลยุทธ์การเช่าหลายรายการอย่างชัดเจนในแบ็กเอนด์ของคุณ เพียงเพิ่มคุณสมบัตินี้ใน 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 เพื่อพยายามเปลี่ยนแปลง ข้อความแสดงข้อผิดพลาดที่ไม่ช่วยเหลือซึ่งเป็นที่ยอมรับนี้

person yrodiere    schedule 22.02.2021
comment
ขอบคุณ มันได้ผล. - person PeterL355; 22.02.2021
comment
@ PeterL355 ไม่มีปัญหา อย่าลืมทำเครื่องหมายวิธีแก้ปัญหาว่ายอมรับแล้ว เพื่อช่วยให้ผู้อื่นมองเห็นได้ง่ายขึ้น - person yrodiere; 23.02.2021