Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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 休眠搜索@IndexedEmbedded_Java_Hibernate_Lucene_Hibernate Search - Fatal编程技术网

Java 休眠搜索@IndexedEmbedded

Java 休眠搜索@IndexedEmbedded,java,hibernate,lucene,hibernate-search,Java,Hibernate,Lucene,Hibernate Search,我有类似的情况,比如 @实体 @索引 公共课场所{ @身份证 @生成值 @文档ID 私人长id; @字段(index=index.TOKENIZED) 私有字符串名称; @OneTONE(cascade={CascadeType.PERSIST,CascadeType.REMOVE}) @指数化 私人地址; .... } @实体 公共课堂演讲{ @身份证 @生成值 私人长id; @字段(索引=索引。标记化) 私家弦街;; @字段(索引=索引。标记化) 私人城市; @包含 @OneToMany(m

我有类似的情况,比如

@实体
@索引
公共课场所{
@身份证
@生成值
@文档ID
私人长id;
@字段(index=index.TOKENIZED)
私有字符串名称;
@OneTONE(cascade={CascadeType.PERSIST,CascadeType.REMOVE})
@指数化
私人地址;
....
}
@实体
公共课堂演讲{
@身份证
@生成值
私人长id;
@字段(索引=索引。标记化)
私家弦街;;
@字段(索引=索引。标记化)
私人城市;
@包含
@OneToMany(mappedBy=“地址”)
私人场所;
...
}
现在的问题是: 例如,如果我更改了实体位置中的名称字段,将重新索引哪些实体

1) 只有名称字段

2) 整个地方的实体

3) 整个地点实体和用@IndexedEmbedded注释的实体


我需要的是第三个。因此,如果它不是标准的,有什么解决方案可以实现这种行为吗?

您可以使用以下代码手动重新索引Place实体

public void updateIndex(T entity){
        FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);
        fullTextEntityManager.index(entity);
        fullTextEntityManager.getSearchFactory().optimize(entity.getClass());
    }

其次,如果您使用hibernate,您可以在
persistence.xml
中配置lucene,以自动更新更改的实体的索引

幸运的是,这确实是第三个,所以我很幸运,它可以按预期工作

实际上,这不是我要找的。我对自动处理感兴趣,你能举一个这种配置的例子吗?
public void updateIndex(T entity){
        FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);
        fullTextEntityManager.index(entity);
        fullTextEntityManager.getSearchFactory().optimize(entity.getClass());
    }