Вопрос

У меня есть объект под названием MyItemBean которые могут иметь 0 или более связанных KeywordBean объекты. Полученные классы выглядят так:

@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...
}

Я использую поиск JBoss Seam/Hibernate для индексации этих объектов, чтобы я мог выполнять поисковые запросы против них. Я бы хотел искать MyItemBean экземпляры с данным значением ключевого слова. Это отношение, однако, однонаправленное, потому что я применяю KeywordBean объекты больше, чем просто MyItemBean. Анкет Я посмотрел в поисковой документации Hibernate для примеров того, как индексировать отношения, но все примеры, которые они предоставляют, являются двунаправленными. Кто -нибудь может сказать мне, какие аннотации мне нужно применить MyItemBean.keywords правильно индексировать значения ключевых слов?

Это было полезно?

Решение

Аннотация для использования Indexedembed. Анкет Это отлично работает и с однонаправленными ассоциациями. Проблема может возникнуть, если вы меняете ценность Ключевое слово Поиск Hibernate не имеет способа обновить индекс для Myitembean Случаи, которые ссылаются на измененные Ключевое слово. Анкет В двунаправленных отношениях вы можете использовать @Содержалась в Чтобы решить эту проблему, но вам это действительно не нужно. Предоставлено в вашем использовании, это ограничение обновления индекса не может быть проблемой. Может быть, твой Ключевое слово не меняется. Или, если он изменится, вы можете повторно индекс всех *ключевых слов, которые влияют вручную.

-Гарди

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top