I am getting the same exception. It only appears when no result is returned.
Are there any known problems using JPA 1.0?
Code:
public List<Profile> fullTextSearch(final String searchData, final int first) {
return doTransacted(new TxResultAction<List<Profile>>(){
public List<Profile> exec(final EntityManager em) {
FullTextEntityManager fullTextEntityManager = org.hibernate.search.jpa.Search.getFullTextEntityManager(em);
String[] fields = new String[]{"firstname", "lastname", "jobTitle, user.email, keywords, organizationType"};
MultiFieldQueryParser parser = new MultiFieldQueryParser(Version.LUCENE_29 ,fields, new StandardAnalyzer(Version.LUCENE_29));
List<Profile> result = new ArrayList<Profile>();
try {
org.apache.lucene.search.Query query = parser.parse( searchData );
FullTextQuery persistenceQuery = fullTextEntityManager.createFullTextQuery(query, Profile.class);
int size = persistenceQuery.getResultSize();
persistenceQuery.setFirstResult(first);
persistenceQuery.setMaxResults(size);
getLogger().info("Found " + size + " profiles");
result = persistenceQuery.getResultList();
return result;
} catch (ParseException e) {
e.printStackTrace();
return result;
}
}
});
}
Code:
protected <T> T doTransacted(final TxResultAction<T> action){
final EntityTransaction tx = manager.getTransaction();
if (tx.isActive()){
getLogger().warn("Transaction already active!");
return action.exec(manager);
} else {
try {
tx.begin();
T result = action.exec(manager);
tx.commit();
return result;
} catch (RollbackException e){
logger.error("error in transacted action: " + e.getMessage(), e);
throw new ResourceServiceException(ErrorConstants.TRANSACTION_ROLLED_BACK, "error in transacted action", e);
} catch (RuntimeException e){
logger.error("error in transacted action: " + e.getMessage(), e);
tx.setRollbackOnly();
throw new ResourceServiceException("error in transacted action: " + e.getMessage(), e);
}
}
}
Code:
<persistence-unit name="xxx" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:/databaseDS</non-jta-data-source>
<class>com.....core.resources.Profile</class>
......
<properties>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding" value="UTF-8" />
<property name="hibernate.search.default.indexbase" value="var/lucene/indexes"/>
<property name="hibernate.search.default.directory_provider" value="org.hibernate.search.store.FSDirectoryProvider"/>
</properties>
</persistence-unit>
Any Ideas?