更改一个字段后,Hibernate Search未编制索引

非常

嗨,我正在尝试解决休眠搜索以索引由经典Sql查询更改的列,如下所示:

 @Override
    public boolean updateColumn(K entityId, String columnName, String columnValue) {
        String entityName = daoType.getSimpleName();
        ClassMetadata employeeMeta = currentSession().getSessionFactory().getClassMetadata(daoType);
        String primaryKey = employeeMeta.getIdentifierPropertyName();
        String queryString = "update " + entityName + " set " + columnName + "='" + columnValue + "' where " + primaryKey + "=" + entityId;
        org.hibernate.Query query = currentSession().createQuery(queryString);

        boolean result = query.executeUpdate() > 0;
        return result;
    }

调用上述方法如下:

belgeSatirService.updateColumn(1, "basvuruNo", "thgm");

更新“ basvuruNo”列后,Hibernate不会自动更新basvuruNo列。该列的定义如下:

@Field(store = Store.YES)
@Column(name = "BasvuruNo", length = 30)//13/95088973/0735/000001
@Analyzer(definition = "whitespaceanalyzer")
private String basvuruNo;
桑内

Hibernate Search不支持拦截使用查询应用的更新更改。

我建议重写DAO模式以使用Hibernate友好模式:通过在域模型上使用实际的对象和设置器。

您还将从中获得其他一些好处,例如:

  • 使启用第二级缓存成为可能。
  • 从脏检查中受益:避免不必要的数据库连接和操作。
  • 高性能状态处理,是否要启用字节码检测或类似功能。
  • 正确集成了Hibernate Envers,Hibernate Search和其他工具。
  • 您还将在运行时节省内存负载:更好的性能。

这样的方法看起来像这样:

public void updateBasvuruNo(K entityId, Class<E> type, String newBasvuruNo) {
    E yourEntity = currentSession().load( type, entityId );
    yourEntity.setBasvuruNo( newBasvuruNo );
}

仅在需要时,才根据需要将托管实体上的状态刷新到数据库,并由您的应用程序控制:通常由事务范围控制。因此,您可能根本不想使用这样的帮助程序,这只是不必要的样板。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Logstash浮动字段未编制索引

如何在 Hibernate Search 6 的几个桥中重用一个字段?

如何更改现有索引中一个字段的映射?弹性搜索

在 lucene 的 BoolQueryBuilder 中从索引连接 3 个字段后选择一个字符串

在一个字段上建立索引并在另一个字段上进行“排序依据”

如果我在mysql中创建两个字段索引,是否需要一个字段索引

通过另一个字段中的 1 索引值获取数组项

Solr索引多个值作为一个字段

在Umbraco 8成员索引中添加一个字段

Django ORM queryset使用json响应以一个字段作为索引的表

为什么要为一个字段创建复合索引?

标@NotNull最后一个字段是未初始化

一个字段未保存到数据库,始终返回0.0

输入字段中未显示第一个字符 useForms

未为Pracelable Object设置一个字段值

如何读取“ apt search”返回的输出的第一个字段?

在Elastic Search中将多个短语匹配到一个字段

如何通过对Infinispan或Hibernate Search的API调用为各个项目编制索引?

django queryset ..search 对象从一个模型的一个字段到另一个模型的另一个字段

我使用哪个字段编制索引

包含日期和时间的字段未与Laravel中的另一个字段进行比较

获取索引的第一个字母?

繁体中文和简体中文索引可以只用一个字段吗?

未选择第一个字符时尝试选择字段时出错

弹性搜索未编制索引

是否不可能为一个属性具有多个字段的文档建立索引,其中一个字段是具有上下文的完成类型?

在不调整索引更改的情况下将多个字符串插入一个字符串

添加新行但更改一个字段

修改现有的 Solr 7.6.0 / Lucene 索引(将另一个字段“URL”添加到已编入索引的文件(.pdf、.docx 等))