2016-06-05 4 views
0

나는 다음과 같은 인덱스 개체가 있습니다최대 절전 모드 검색 동작입니까?

@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 주석이 없습니다.

정상 동작인지 묻는 중 최대 절전 모드 개체 전체를 인덱싱합니다. 또는 누락 된 데이터를 데이터베이스에서 가져옵니다.이 동작에 대한 설명이 필요합니다.

답변

1

하이버 네이트 검색은 사용자가 명시 적으로 선언 한 필드만을 인덱스에 저장한다. (더 정확하게는 기본적으로 인덱스를 지정하고 하이버 네이트 검색에 @Field 주석에 스토어 옵션을 추가하여 저장할 수있다).

당신이 관찰 한 바에 따라 최대 절전 모드 검색은 검색을 수행 한 후에 데이터베이스의 정보로 개체를 보완합니다. 이것은 Hibernate Search를 사용할 때 주요 관심사 중 하나이다. 리턴 된 객체는 관리되는 엔티티이다.

+0

그래서 정확한 행동은 무엇입니까, 그것은 각 연구에 대한 데이터베이스를 심문합니까 ?? –

+1

일반적인 검색에서 예, Lucene 인덱스에 대해 쿼리를 실행 한 다음 데이터베이스에서 쿼리/쿼리를 실행하여 관리되는 엔터티를 작성합니다. 인덱스에서 직접 저장된 특정 필드를 반환하기 위해 프로젝션을 사용하는 경우에만 그렇지 않습니다. 내가 언급했듯이, 이것은 Hibernate Search의 좋은 점 중 하나이다. –