title: How to use hibernate lucene search for entity which have many to one relation
body: <p>I am using Hibernate lucene for searching. Now I want to search with an entity which has a many to one relation</p>
  
  <p>I have two class one is <code>catalogueBase</code> and another one is <code>Subject</code>, here subject has a many-to-one relation (it is one sided relation) </p>
  
  <p>catalogueBase.java class :</p>
  
  <pre class="lang-java prettyprint-override"><code>@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;
      }
  }
  </code></pre>
  
  <p>Subject.java (what ever i want to search regarding subject it will be stored in description column) :</p>
  
  <pre class="lang-java prettyprint-override"><code>@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;
      }
  
      // ....
  }
  </code></pre>
  
  <p>this is my DAO method :</p>
  
  <pre class="lang-java prettyprint-override"><code>private List&lt;CatalogueBase&gt; searchTitle(String queryString) throws InterruptedException {
      Session session = getSession();
      FullTextSession fullTextSession = Search.getFullTextSession(session); 
      fullTextSession.createIndexer().startAndWait();
      org.hibernate.Query fullTextQuery = null;
      List&lt;CatalogueBase&gt; 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&lt;CatalogueBase&gt; contactList = fullTextQuery.list();
  
          resultList = new ArrayList&lt;CatalogueBase&gt;();;
  
          for (CatalogueBase catalogueBase : contactList) {
              catalogueBase.setNoOfCopiesBooks(getCopydetailsCount(catalogueBase.getId()));
              catalogueBase.setIssuedCount(getIssuedCount(catalogueBase.getId()));
              resultList.add(catalogueBase);
          }
      } catch(Exception e) {
          e.printStackTrace();
      }
  
      return resultList;
  }
  </code></pre>
  
  <p>But it's giving an error like: <code>SearchException: Unable to find field subject in com.easylib.elibrary.model.CatalogueBase</code></p>
  
  <p>And I did something like <a href="https://stackoverflow.com/questions/12852557/how-to-search-in-related-entity-hibernate-search">this post</a>, but error was the same.</p>