Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建初始索引时Hibernate搜索失败_Java_Spring Boot_Spring Data Jpa_Hibernate Search - Fatal编程技术网

Java 创建初始索引时Hibernate搜索失败

Java 创建初始索引时Hibernate搜索失败,java,spring-boot,spring-data-jpa,hibernate-search,Java,Spring Boot,Spring Data Jpa,Hibernate Search,我正在尝试将Hibernate搜索集成到SpringBoot2应用程序中。我在他们的网站上尝试了不同版本的兼容性列表,但在启动应用程序并执行“fullTextEntityManager.createIndexer().startAndWait();”时,我总是会遇到此错误: 线程“main”java.lang.IllegalArgumentException中的异常:HSEARCH000349:某些指定的实体类型(“类java.lang.Object”)没有索引,它们的任何子类也没有索引。 经过

我正在尝试将Hibernate搜索集成到SpringBoot2应用程序中。我在他们的网站上尝试了不同版本的兼容性列表,但在启动应用程序并执行“fullTextEntityManager.createIndexer().startAndWait();”时,我总是会遇到此错误:

线程“main”java.lang.IllegalArgumentException中的异常:HSEARCH000349:某些指定的实体类型(“类java.lang.Object”)没有索引,它们的任何子类也没有索引。

经过3天的谷歌搜索和尝试,我不知道我还能做什么


pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.7.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    ...
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.opencsv</groupId>
        <artifactId>opencsv</artifactId>
        <version>${opencsv.version}</version>
    </dependency>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-jdk8</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-search-orm</artifactId>
        <version>5.10.6.Final</version>
    </dependency>

    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-spatial</artifactId>
        <version>5.5.5</version>
    </dependency>

</dependencies>
hibernate.properties

...
spring.datasource.username=*******
spring.datasource.password=*******
spring.jpa.database=MYSQL
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=false
spring.jpa.hibernate.naming.physicalstrategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.hibernate.search.default.directory_provider=filesystem
spring.jpa.hibernate.search.default.indexBase=/lucene/indexes
hibernate.search.default.directory_provider=filesystem
hibernate.search.default.indexBase=/lucene/indexes
要索引的我的实体餐厅:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@Indexed
@Spatial
@Entity
@Table(name = "restaurant")
public class Restaurant {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Field(index = Index.YES, analyze = Analyze.NO, store = Store.YES)
    private String name;
    private String address;
    @Latitude
    private Double latitude;
    @Longitude
    private Double longitude;
}
@AllArgsConstructor
@Service
@Slf4j
public class HibernateSearchService {

    private EntityManager entityManager;
    @Transactional
    public void initializeHibernateSearch() {

        try {
            FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
            fullTextEntityManager.createIndexer().startAndWait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
我正在启动spring启动后初始化Hibernate搜索

@SpringBootApplication
public class PlacesApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = 
        SpringApplication.run(PlacesApplication.class, args);

        context.getBean(HibernateSearchService.class)
        .initializeHibernateSearch();
}
我的Hibernate搜索服务看起来像:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@Indexed
@Spatial
@Entity
@Table(name = "restaurant")
public class Restaurant {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Field(index = Index.YES, analyze = Analyze.NO, store = Store.YES)
    private String name;
    private String address;
    @Latitude
    private Double latitude;
    @Longitude
    private Double longitude;
}
@AllArgsConstructor
@Service
@Slf4j
public class HibernateSearchService {

    private EntityManager entityManager;
    @Transactional
    public void initializeHibernateSearch() {

        try {
            FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
            fullTextEntityManager.createIndexer().startAndWait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

我发现了这个问题,非常非常愚蠢的问题

我的IDE刚刚导入了错误的索引注释
设置导入org.springframework.stereotype.index;而不是导入org.hibernate.search.annotations.index

你救了我一个小时又一个小时的搜索