Acessando atributos de outras classes no Hibernate search

hibernate

Olá Pessoal,

O post de hoje é bem simples, recentemente passei por um problema em como acessar os atributos de outra classe atraves do hibernate search.

Let go..
Problema

Você tem a classe Carro e essa classe tem um objeto Motor e vc precisa acessar o atributo versao que está na classe Motor. Como fazer isso com hibernate search? Parece que é simples né? Nem tanto gastei algumas horas até saber como fazer.
Solução

Vamos lá, você vai precisar na classe Carro fazer isso:

@Indexed
class Carro{

@IndexedEmbedded
private Motor motor;

}

E na classe Motor isso:

@Indexed
class Motor{

@Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO) 
@ContainedIn
private String versao;
}

Agora na sua busca ficará assim:

QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Professor.class).get();

Query query = queryBuilder.keyword().onFields( "motor.nome")
.matching(descricao).createQuery();

FullTextQuery hibQuery = fullTextSession.createFullTextQuery(query, Carro.class, Motor.class);

Observe que o pulo do gato “motor.nome”.

Resolvido.

abraço, see ya!!!

Deixe um comentário

O seu endereço de e-mail não será publicado.