|
Yes I start from a lucene query.
In the meantime I have resolved using the java reflection: .... FullTextQuery fullTextQuery = fullTextEntityManager.createFullTextQuery(myLuceneQuery, filteredClasses); FullTextQuery mainFullTextQuery = this.createFullTextQuery(fullTextEntityManager, filteredClasses.toArray(new Class<?>[] {})); Field privateHSQueryField = mainFullTextQuery.getClass().getDeclaredField("query"); makeModifiable(privateHSQueryField); FullTextQueryImpl hsqueryfield = (FullTextQueryImpl) privateHSQueryField.get(mainFullTextQuery);
Field privateField = hsqueryfield.getClass().getDeclaredField("hSearchQuery"); makeModifiable(privateField); HSQuery hsquery = (HSQuery) privateField.get(hsqueryfield); Query query = hsquery.getLuceneQuery();
private static void makeModifiable(Field nameField) throws Exception { nameField.setAccessible(true); int modifiers = nameField.getModifiers(); Field modifierField = nameField.getClass().getDeclaredField("modifiers"); modifiers = modifiers & ~Modifier.FINAL; modifierField.setAccessible(true); modifierField.setInt(nameField, modifiers); }
|