запрос однонаправленного индекса many2one - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь сделать индекс поиска Hibernate следующим соотношением:

DocVersion * <-> Document2 -> DocType

@Indexed
@Entity
public class Document2 implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "doc_uuid")
    private long id;

    @IndexedEmbedded
    @ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
    @JoinColumn(name = "documentType")
    private DocType docType;
}



@Indexed
@Entity
public class DocType implements  Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "doctype_id")
    private long id;

    @Field
    @Column(name = "documentType")
    private String documentType;
}

, поэтому это однонаправленное отношение @ManyToOne из класса Document2потому что DocType только кодируемый.

Однако мне нужно запросить индекс на основе свойства cdt, например document2.docType.documentType, что дает мне:

WARNING: org.hibernate.search.exception.SearchException: Unable to find field document2.docType.documentType in com.nws.vedica.model.entity.DocVersion

что мне не хватает?

hibernate-search: 5.9.3.Final

1 Ответ

0 голосов
/ 23 ноября 2018

Итак, я пропустил @ContainedIn, который должен быть на противоположной стороне @IndexedEmbedded.Для меня в Document2:

    @ContainedIn
    @OneToMany(mappedBy = "document2", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @org.hibernate.annotations.Cache(
            usage = CacheConcurrencyStrategy.READ_WRITE
    )
    private Set<DocVersion> docVersions;

и в DocType в виде «листа» вообще не обязательно указывать ссылку на Document2.

Надеюсь, что кому-то поможет

...