2012-09-11 9 views
5

Estoy usando Hibernate Search y la documentación y los libros dicen que necesito @DocumentId en el campo de identificación para que Hibernate Search pueda saber cómo asignar el índice a los objetos.¿Se requiere @DocumentId para Hibernate Search?

Mi código parece estar funcionando bien sin el @DocumentId en mi código. ¿Hibernate Search se volvió lo suficientemente inteligente como para darse cuenta de que el campo @Id es un gran valor predeterminado? ¿Hay problemas que esto cause que no sean obvios?

¡Gracias por su tiempo!

Respuesta

4

@DocumentId es necesario si está utilizando el estilo antiguo de mapeo de sus entidades con .hbm.xml archivos. Si usted es usar ese método de asociación y el abandono de anotar un ID de documento, a continuación, en el arranque, verá una excepción de esta manera:

org.hibernate.search.SearchException: No document id in: com.mypackage.MyEntity 

Sin embargo, si está utilizando anotaciones y ha anotado una clave principal con @Id, a continuación, no es necesario que use @DocumentId.

Para ser más precisos, la documentación de Hibernate Buscar @DocumentId dice que es opcional cuando se utiliza JPA anotaciones. Por lo tanto, tal vez aún necesite usar @DocumentId si está utilizando anotaciones de estilo Hibernate 3.x ... Nunca lo he probado.

De cualquier manera, Hibernate 4.x desaprueba sus propias anotaciones de mapeo a favor de las anotaciones de tipo APP, incluso siSession está utilizando en lugar de la APP de EntityManager para sus consultas de Hibernate. Así que en pocas palabras: necesita usar @DocumentId si está utilizando asignaciones de estilo XML ... mientras que es opcional si está usando anotaciones, porque en este punto debería usar anotaciones de estilo JPA de todos modos.

+0

Pensé que este era el caso, pero no pude encontrarlo en los documentos. ¡Gracias! – jackcrews

Cuestiones relacionadas