Pregunta

Estoy usando Hibernate búsqueda y aplicaron Lucene de indexación en una mesa para un objeto de dominio. Ahora quiero hacer la selección de esta tabla de objetos de dominio y aplicar el filtrado basado en unirse con otra tabla, que no está indexado.

Para exampple, tengo Subasta tabla porciones, que he indexado. Y tengo mesa de Cotizaciones. Cotizaciones tienen referencias a la subasta de lotes.

Quiero realizar búsqueda de prueba completa en la tabla y volver AuctionLots entidades coincidentes que no tienen cotizaciones. En SQL ordinaria esto sería logrado por JOIN.

Sin embargo, en la situación con HibernateSearch, tengo que hacer la búsqueda prueba completa con el fin de obtener los objetos de dominio, pero no sé cómo llevar a cabo la filtración con JOIN.

¿Tiene algún cuerpo tiene una idea de cómo hacer esto?

¿Fue útil?

Solución

No recomiendo filtrado al crear los índices para su búsqueda. Sobre todo porque no es compatible con Hibernate Buscar por lo que yo sé, pero también porque no tiene sentido. Lo que debe hacer en mi opinión, es el índice del objeto que desea buscar, incluyendo las relaciones con los objetos pediátricas. Asumo el objeto ActionLot tiene una relación de uno a muchos de sus objetos de cotizaciones. Con la anotación @IndexEmbedded, puede marcar sus presupuestos como objetos que deben ser indexados también. Cuando busca los ActionLots sin comillas, puede filtrar esto durante su búsqueda usando cualquiera de las restricciones en la consulta de búsqueda, o mediante la aplicación de un filtro global a su búsqueda. Esto se puede hacer mediante el proporcionado por Hibernate Search.

Otros consejos

Uso de @IndexEmbedded o una ClassBridge es definitivamente el enfoque correcto. También los datos cambiantes no deben causar un problema. Eso es lo que la indexación automática es para. Usted no tiene que volver a indexar todos los datos cada vez que una comilla. Basándose en la indexación automática se asegurará de que sólo los datos añadido / modificado se re-indexada. Como nota - si quieres que el índice de una instancia ActionLot que se actualiza cuando los cambios de las cotizaciones relacionadas, es necesario tener una relación bidireccional y utilizar @ConstainedIn

- Hardy

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top