2016-06-07 7 views
1

Ich habe Hibernate mit der folgenden Maven AbhängigkeitHibernate Search 5.5.3 final keine indizierten Daten Ergebnisse abrufen?

 <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.1.0.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.1.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-search-orm</artifactId> 
     <version>5.5.3.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-jpa</artifactId> 
     <version>1.7.2.RELEASE</version> 
    </dependency> 


    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>${mysql.driver.version}</version> 
    </dependency> 

Ich habe configure Hibernate mit Indizierung mit diesem Stück Code Dies ist der Code Ich bin mit

jpaProperties.put("hibernate.search.default.directory_provide","filesystem"); 
    jpaProperties.put("hibernate.search.default.indexBase","C:\\Index"); 

public List<Deals> findDealBySubcatIdhsearch(long subCatId,String search){ 
    //Option or suboption may be included in future, if needed 
    logger.info("Deal nameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"+search+"iiiiiiiiiiid"+subCatId); 

    FullTextEntityManager fullTextEntityManager = org.hibernate.search.jpa.Search. 
       getFullTextEntityManager(em); 
    QueryBuilder qb = fullTextEntityManager.getSearchFactory() 
    .buildQueryBuilder().forEntity(Deals.class).get(); 
    org.apache.lucene.search.Query query = qb 
    .keyword().wildcard().onFields("dealName").matching("*"+search.toLowerCase()+"*") 
    .createQuery(); 

    org.hibernate.search.jpa.FullTextQuery jpaQueryy = 
     fullTextEntityManager.createFullTextQuery(query, Deals.class); 

//jpaQueryy.enableFullTextFilter("category").setParameter("categoryId", 1); 
    List<Deals> results = jpaQueryy.getResultList(); 


        logger.info("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"+jpaQueryy.getResultSize()+"Subid"+subCatId); 
        if(jpaQueryy.getResultList().size()==0) 
        { 
          query = qb 
           .keyword().onFields("dealName").matching("*"+search.toLowerCase()+"*") 
           .createQuery(); 

           jpaQueryy = 
            fullTextEntityManager.createFullTextQuery(query, Deals.class); 

           results = jpaQueryy.getResultList(); 
        } 
        List<Deals> output = 
          results.parallelStream() 
           .filter(d -> d.getSubcategories().getSubcategoryId() == subCatId) 
           .collect(Collectors.toList()); 

    return output; 
} 
einrichten

Hier sind meine Modellklassen

@Entity 
@Indexed 
@Table(name = "deals") 
public class Deal 
{ 

@Id 
@Basic(optional = false) 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(name = "deal_id") 
private Long dealId; 

@Column(name = "deal_name") 
@Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO) 
private String dealName; 
} 

DealOptions

@Entity 
@Indexed 
@Table(name = "dealoptions") 
public class DealOptions 
{ 

@Id 
@Basic(optional = false) 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(name = "option_id") 
private Long optionId; 

@Column(name = "name") 
@Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO) 
private String Name; 


} 

Aber wenn ich ein Objekt Hibernate Suchdaten indiziert bestehen bleiben wird, aber überwintern Suche kein Fehler in der console.What nicht die Details des beharrte object.There holen ist, ist der Fehler?

+0

Was meinen Sie mit "nicht genau holen"? Führen Sie eine Abfrage aus, sehen jedoch nicht die erwarteten Ergebnisse? Es würde helfen, den Code, den Sie ausführen, und das Ergebnis, das Sie davon erwarten, zu sehen. – Gunnar

+0

@Gunnar Hibernate Search ruft keine Details des persistenten Objekts ab – briantaurostack7

Antwort

1

Ich fand schließlich den Fehler, der der Fehler war, dass der Parameter dealname, den ich für die Hibernate-Suche verwendete, NULL-Werte hatte, weil er das Ergebnis nicht abgerufen hat.

Verwandte Themen