我正在使用 Hibernate lucene 进行搜索。现在我想使用具有多对一关系的实体进行搜索
我有两个班级,一个是catalogueBase,另一个是Subject,这里的主题有一个多对一的关系(它是单方面的关系)
catalogueBase.java 类:
@Indexed
@JsonAutoDetect
@Entity
@Table(name="catalogueBase")
public class CatalogueBase extends BaseObject implements Serializable {
    // some entities
    // ...
    private Subject subject; 
    // setter and get methods 
    // ...
    @Field(index = Index.YES, analyze = Analyze.YES, store = Store.YES)
    @ManyToOne
    @NotFound(action= NotFoundAction.IGNORE)
    @JoinColumn(name = "subject1", insertable = true, updatable=true, nullable = true)
    @JsonProperty
    public Subject getSubject() {
        return subject;
    }
    public void setSubject(Subject subject) {
        this.subject = subject;
    }
}
Subject.java(我想搜索的关于主题的内容将存储在描述列中):
@Indexed
@JsonAutoDetect
@Entity
@Table(name="subject")
public class Subject implements java.io.Serializable {
    private String description;
    // ...
    @Column(name = "subjectname", nullable = false, length = 150)
    public String getDescription() {
        return this.description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    // ....
}
这是我的 DAO 方法:
private List<CatalogueBase> searchTitle(String queryString) throws InterruptedException {
    Session session = getSession();
    FullTextSession fullTextSession = Search.getFullTextSession(session); 
    fullTextSession.createIndexer().startAndWait();
    org.hibernate.Query fullTextQuery = null;
    List<CatalogueBase> resultList = null;
    try{
        QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(CatalogueBase.class).get();
        org.apache.lucene.search.Query luceneQuery = queryBuilder.keyword().onFields("title","subject").matching(queryString).createQuery();     
        fullTextQuery = fullTextSession.createFullTextQuery(luceneQuery, CatalogueBase.class);
        List<CatalogueBase> contactList = fullTextQuery.list();
        resultList = new ArrayList<CatalogueBase>();;
        for (CatalogueBase catalogueBase : contactList) {
            catalogueBase.setNoOfCopiesBooks(getCopydetailsCount(catalogueBase.getId()));
            catalogueBase.setIssuedCount(getIssuedCount(catalogueBase.getId()));
            resultList.add(catalogueBase);
        }
    } catch(Exception e) {
        e.printStackTrace();
    }
    return resultList;
}
但它给出了一个错误,如:SearchException: Unable to find field subject in com.easylib.elibrary.model.CatalogueBase
我做了类似这篇文章的事情,但错误是一样的。