【问题标题】:Hibernate-search behavior?休眠搜索行为?
【发布时间】:2016-06-05 09:16:52
【问题描述】:

我有一个索引实体,如下所示:

@MappedSuperclass
public static class Model{

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

private boolean isDeleted;

}

索引类是:

@Entity
@Table("USERS")
@Indexed
public class ProductModel extends Model{

@Field
private String name;

//getters & setters

}

好吧,当我对 ProductModel 进行研究时,我得到了标志 isDeleted 的值,而它没有用 @Field 注释。

我在问这是否是正常行为,Hibernate-search 是否为整个对象编制索引,或者它是否从数据库中获取丢失的数据,我需要对此行为进行解释。

【问题讨论】:

    标签: java hibernate hibernate-search


    【解决方案1】:

    Hibernate Search 仅将您明确声明的字段存储在索引中(更准确地说,它默认索引,您可以通过将 store 选项添加到 @Field 注释来让 Hibernate Search 存储它)。

    您观察到的是,Hibernate Search 在执行搜索后将对象与数据库的信息结合起来。这是使用 Hibernate Search 的主要兴趣之一:返回的对象是托管实体。

    【讨论】:

    • 那么确切的行为是什么,它会为每项研究询问数据库吗??
    • 在典型的搜索中,是的,它针对 Lucene 索引运行查询,然后对数据库执行查询/查询以构建托管实体。唯一不这样做的情况是,如果您使用投影返回直接存储在索引中的特定字段。正如我所提到的,这是 Hibernate Search 的优点之一。
    猜你喜欢
    • 2011-11-17
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    相关资源
    最近更新 更多