[hibernate-issues] [Hibernate-JIRA] Commented: (HSEARCH-682) DSL cannot handle fieldBridge for @IndexEmbedded fields

Nick Fenwick (JIRA) noreply at atlassian.com
Mon Apr 18 08:23:59 EDT 2011


    [ http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-682?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=42082#action_42082 ] 

Nick Fenwick commented on HSEARCH-682:
--------------------------------------

Just to reiterate.. I cannot move this forward.  I am not capable of getting my attached test case to run, probably because I've made some simple error.  Would appreciate some assistance in verifying what I've done.  If it runs for others as it is, then I know I've got something broken in my local system.

> DSL cannot handle fieldBridge for @IndexEmbedded fields
> -------------------------------------------------------
>
>                 Key: HSEARCH-682
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-682
>             Project: Hibernate Search
>          Issue Type: New Feature
>          Components: query
>    Affects Versions: 3.3.0.Final
>         Environment: Hibernate 3.6.0, HSearch 3.3.0, Mysql 5.1.52.
>            Reporter: Nick Fenwick
>             Fix For: 3.5
>
>         Attachments: HSEARCH-682-unittest1.tgz
>
>
> Discussed in https://forum.hibernate.org/viewtopic.php?f=9&t=1009440, "Re: Correct to use ignoreFieldBridge for "subentity.field" DSL?".
> I find I have to set ignoreFieldBridge when querying for a field indexed using @IndexEmbedded, i.e.:
> {code}@Entity
> class CategoryEntity {
>    @Column(name="lft")
>    @Field(name="left", index=Index.UN_TOKENIZED, store=Store.YES)
>    @FieldBridge(impl=PadNumberBridge.class,
>          params = { @Parameter(name="pad", value="4") }
>    )
>    private int left;
>    ... same for 'right' ...
> }
> @Entity
> class ItemEntity {
>    @IndexedEmbedded(depth=1)
>    private CategoryEntity category;
> }{code}
> results in fields for ItemEntity being stored in the Lucene index like:
> {code}
> category.left = 0004
> category.right = 0012
> {code}
> To query for these, I cannot do:
> {code}
> qb.range().onField("category.left").above(4).createQuery()
> {code}
> I get an exception saying it doesn't know what FieldBridge to use for "category.left".  Instead, I can do:
> {code}
> qb.range().onField("category.left").ignoreFieldBridge().above(4).createQuery()
> {code}
> but the 'value' is no longer padded according to the FieldBridge that was specified in CategoryEntity for its 'left' attribute, I have to pass value as e.g. "0004".
> It would be good to mention this situation in the documentation (5.1.2. "Building a Lucene query with the Hibernate Search query DSL"), at least to specify that it is/isn't supported, so that people attempting this kind of @IndexEmbedded mapping know how to safely build a query for such fields.

-- 
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