Поиск и отношения с зимством
-
11-10-2019 - |
Вопрос
У меня есть объект под названием 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 Случаи, которые ссылаются на измененные Ключевое слово. Анкет В двунаправленных отношениях вы можете использовать @Содержалась в Чтобы решить эту проблему, но вам это действительно не нужно. Предоставлено в вашем использовании, это ограничение обновления индекса не может быть проблемой. Может быть, твой Ключевое слово не меняется. Или, если он изменится, вы можете повторно индекс всех *ключевых слов, которые влияют вручную.
-Гарди