Pregunta

Tengo un objeto llamado MyItemBean que puede tener 0 o más asociados objetos KeywordBean. Las clases resultantes tienen este aspecto:

@Entity
public class MyItemBean {

   ...stuff...

   @ManyToMany(targetEntity = KeywordBean.class, cascade = CascadeType.PERSIST)
   @JoinTable(name = "tbl_item_keyword", joinColumns = @JoinColumn(name = "item_id"), inverseJoinColumns = @JoinColumn(name = "keyword_id"))
   private List<KeywordBean> keywords = null;

   ...more stuff...
}

@Entity
public class KeywordBean {

   ...stuff...

   private String value=null;

   ...more stuff...
}

Estoy usando JBoss Seam / Hibernate búsqueda para indexar estos objetos para que pueda realizar consultas de búsqueda en contra de ellos. Me gustaría ser capaz de buscar casos MyItemBean con un valor de palabra clave determinada. Esta relación, sin embargo, es unidireccional porque aplico KeywordBean se opone a algo más que MyItemBean. He mirado en la documentación de Hibernate Búsqueda de ejemplos sobre cómo las relaciones de índice, pero todos los ejemplos que proporcionan son bidireccionales. ¿Puede alguien decirme lo que necesito anotaciones para aplicar en MyItemBean.keywords para indexar los valores de palabras clave correctamente?

¿Fue útil?

Solución

La anotación de uso es IndexedEmbedded . Funciona bien con las asociaciones unidireccionales también. Un problema puede producirse si cambia el valor de KeywordBean Hibernate de búsqueda no tienen una manera de actualizar el índice para el MyItemBean instancias que hacen referencia al cambiado KeywordBean . En las relaciones bidireccionales puede utilizar @ContainedIn Para solucionar este problema, pero que realmente no necesita esto. Provisto en su caso de uso esta actualización restricción índice podría no ser un problema. Tal vez su KeywordBean no es cambiando. O si cambia puede volver a indexar todos KeywordBean * * s que se ven afectados de forma manual.

- Hardy

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