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!!!