Return empty result list - Composed primary key - lucene search ok - primary key bridge ok

Description

Entity :

@Indexed
@Entity
public class Demande extends DemandeEntity {
...

Superclass :

...

@MappedSuperclass
public class DemandeEntity implements Serializable {

...

@FieldBridge(impl=Demande_DocumentId_Bridge.class)
@DocumentId
@IndexedEmbedded
private DemandePK demandePK;

...

Bridge :

...

public class Demande_DocumentId_Bridge implements TwoWayStringBridge {

...

public Object stringToObject(String arg0) {
String[] tab = arg0.split("þ");
return new DemandePK(tab[0],tab[1],tab[2]);
}

...

public String objectToString(Object arg0) {
DemandePK d = (DemandePK)arg0;
return d.getUiPhar()"þ"+d.getRdes()"þ"+d.getTypeDem();
}
}

TestClass :

...

public static void main(String[] args) {

ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("META-INF/PostGreSQL-applicationContext.xml");
GenericSearchManagerMetier demandeSearchManagerMetier = (GenericSearchManagerMetier) appContext.getBean("demandeSearchManagerMetier");

String rqt = "+text:jean +text:francois";
BeanLuceneQuery beanLuceneQuery = new BeanLuceneQuery(rqt);
BeanResultats br = null;

try {
br = demandeSearchManagerMetier.searchLuceneQuery(beanLuceneQuery,0,15);
} catch (NegativeOrNullInteger e) {
e.printStackTrace();
}

System.out.print("Nb total : "br.getNbTotalResults()"\n");
System.out.print("Nb Résultats : "br.getResults().size()"\n");

}

Lucene part of process is alright !
Primary keys DemandePK generated by HS just before requesting DB are alright

but no return...

br.getNbTotalResults() return 16
but
br.getResults().size() return 0

Beans are correctly implemented.
I traced return of :

List<T> resultList = q.getResultList();

but list size = 0

stdout :

...

Hibernate: select this_ (..xxx..) from Demande this_ where ((this_.RDES, this_.TYPE_DEM, this_.UI_PHAR) in ((?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?)))
Nb total : 16
Nb Résultats : 0

Attachments

1

Activity

Show:

Gaël Saunier April 2, 2010 at 5:40 PM

I've just try the latest versions
and bug is fixed

tested version :

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search</artifactId>
<version>3.2.0.Beta1</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.5.0-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.0-Final</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.5.0-Final</version>
</dependency>

Gaël Saunier March 29, 2010 at 5:23 PM

In ObjectLoaderHelper.initializeObjects(...) :

disjunction.add( Restrictions.in( idName, ids ) ); //Restrictions.in( idName, ids ).toString() => entityPK in (test.persistant.EntityPK@512265, test.persistant.EntityPK@512328)

criteria.add( disjunction );

criteria.list(); //load all objects => return empty list

Gaël Saunier March 29, 2010 at 4:47 PM

problem is in : (v 3.1.1 GA)

Class FullTextQueryImpl

public List list() throws HibernateException {

...

Loader loader = getLoader();
List list = loader.load( infos.toArray( new EntityInfo[infos.size()] ) );

..

}

Loading isn't executed correctly.
return empty list

Gaël Saunier March 29, 2010 at 1:29 PM

A simple test project with this bug.
Change test query to be convinced.

Fixed

Details

Assignee

Reporter

Components

Fix versions

Affects versions

Priority

Created March 29, 2010 at 11:17 AM
Updated April 3, 2010 at 1:36 PM
Resolved April 2, 2010 at 5:54 PM