2016-06-05 5 views
0

У меня есть индексный объект, как показано ниже:Hibernate-search поведение?

@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 Индекс всего объекта. Или он извлекает недостающие данные из базы данных, мне нужно объяснение этого поведения.

ответ

1

Hibernate Поиск только сохраняет в индексе поля, которые вы объявляете явно (точнее, индексы по умолчанию, и вы можете запросить Hibernate Search сохранить его, добавив опцию store в аннотацию @Field).

Что вы наблюдаете, так это то, что Hibernate Search улавливает объекты с информацией о базе данных после выполнения поиска. Это один из главных интересов использования Hibernate Search: возвращенные объекты являются управляемыми объектами.

+0

так что такое точное поведение, запрашивает ли он базу данных для каждого исследования? –

+1

В обычном поиске да, он запускает запрос против индексов Lucene, тогда он выполняет запрос/запросы в базе данных для создания управляемых объектов. Единственный случай, когда он этого не делает, - это использование проекции для возврата определенных полей, хранящихся непосредственно в индексе. Как я уже говорил, это одна из приятных вещей в Hibernate Search. –

 Смежные вопросы

  • Нет связанных вопросов^_^