У меня проблема с индексацией lucene, я вставляю одну индексированную сущность в ассоциацию manyToMany, но lucene не выполняет индексацию, как я ожидал.
@Entity
@Indexed
@Table(name="level")
public class Level {
...
@IndexedEmbedded
private List<Course> courses = new ArrayList<Course>();
@ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable(name = "level_course", joinColumns = { @JoinColumn(name = "level_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "course_id", nullable = false, updatable = false) })
@OrderColumn(name="corder")
public List<Course> getCourses() {
return courses;
}
...
}
@Entity
@Indexed
@Table(name="course")
@FullTextFilterDef(name = "filterLevel", impl = LuceneFilterFactory.class ,cache=FilterCacheModeType.NONE)
public class Course {
...
@ContainedIn
private List<Level> levels = new ArrayList<Level>();
@ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="courses")
public List<Level> getLevels() {
return levels;
}
}
Когда я это делаю: level.getCourses (). Add(myCourse1);entityManager.save (level);
myCourse1 (например, с ID # 10) будет хорошо создан и привязан к уровню (уровень - родительский класс, курс - дочерний).Тогда экземпляры «Course» хорошо индексируются, но если я посмотрю на индексы, сгенерированные для Course, я ожидал найти «levels.id» со значением # 10.Но я не нахожу это.Мне нужна такая индексация, потому что я использую LuceneFilterFactory.class на курсе, чтобы отфильтровать курс по одному уровню ID.
Может быть, мое использование аннотаций @ContainedIn и @IndexEmbedded не подходит?Или, может быть, я совершенно не в том направлении, чтобы делать то, что мне нужно.
Для упрощения:
У меня есть 2 класса A и B, с ассоциацией manyToMany между A и B.
A - этомастер по отношению.А и В индексируются.Я хотел бы использовать поиск в спящем режиме для получения объектов B, содержащих один объект A в их ассоциации manyToMany.Я не хочу получать все объекты B, а только объекты B, содержащие этот конкретный A.
Как это сделать?
Спасибо за помощь