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