[hibernate-issues] [Hibernate-JIRA] Commented: (HSEARCH-372) ClassBridges are not handled in projection
Thomas Goetz (JIRA)
noreply at atlassian.com
Thu May 28 11:09:14 EDT 2009
[ http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-372?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=33268#action_33268 ]
Thomas Goetz commented on HSEARCH-372:
--------------------------------------
Ok, in my case it works if I extend DocumentBuilderIndexedEntity.processFieldsForProjection like that:
--- snip ---
private static void processFieldsForProjection(PropertiesMetadata metadata, String[] fields, Object[] result, Document document) {
final int nbrFoEntityFields = metadata.fieldNames.size();
for ( int index = 0; index < nbrFoEntityFields; index++ ) {
populateResult(
metadata.fieldNames.get( index ),
metadata.fieldBridges.get( index ),
metadata.fieldStore.get( index ),
fields,
result,
document
);
}
// handle ClassBridge
final int nbrOfClassFields = metadata.classNames.size();
for (int index = 0; index < nbrOfClassFields; index++) {
populateResult(
metadata.classNames.get(index),
metadata.classBridges.get(index),
metadata.classStores.get(index),
fields,
result,
document
);
}
final int nbrOfEmbeddedObjects = metadata.embeddedPropertiesMetadata.size();
for ( int index = 0; index < nbrOfEmbeddedObjects; index++ ) {
//there is nothing we can do for collections
if ( metadata.embeddedContainers.get( index ) == PropertiesMetadata.Container.OBJECT ) {
processFieldsForProjection(
metadata.embeddedPropertiesMetadata.get( index ), fields, result, document
);
}
}
}
--- snip ---
This may not be the desired solution, but as I only use ClassBridge with name() and don't do anything unusual inside the ClassBridge implementations, I can live with that hack for now.
> ClassBridges are not handled in projection
> ------------------------------------------
>
> Key: HSEARCH-372
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-372
> Project: Hibernate Search
> Issue Type: New Feature
> Affects Versions: 3.1.0.GA
> Reporter: Thomas Goetz
> Priority: Critical
> Fix For: 3.2.0
>
> Attachments: ClassBridgeProjectionTest.zip
>
>
> Values that were stored by a ClassBridge are not accessible via projection. Luke shows the values, so I'm sure they are there. I think Emmanuel is already aware of the problem, as stated here: https://forum.hibernate.org/viewtopic.php?f=9&t=996373&view=previous
> As I run Hibernate Search from within JBoss I'm not quit sure how to demonstrate this bug in a standalone testcase. If someone gave me a hint on how this could be done without too much pain, I'd supply a test case.
> I use the following annotation on the class to be indexed:
> @ClassBridge(
> name = "amount_of_students",
> index = Index.UN_TOKENIZED,
> store = Store.YES,
> impl = StudentsSizeBridge.class)
> public class Teacher implements Serializable {
>
> ...
>
> }
> As I said, the amount_of_students value is correctly stored in the Lucene index (viewable with Luke), but if I try to project the value within a FullTextQuery it is always empty.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list