]
Davide D'Alto commented on HSEARCH-682:
---------------------------------------
Hi,
Maybe it's a bit late but I think there are some errors in the test:
1) getAnnotatedClasses() should returned both entities not only the parent (this should
solve the mapping exception).
2) ParenteEntity#embeddedEntity should be annotated with @OneToOne or @ManyToOne. I
don't think @IndexEmbedded alone is enough.
3) You should remove the @Field(name = "embedded") and use instead
@IndexEmbedded(prefix = "embedded.", depth = 1)
Everything should work if you apply this changes (at least with the latest hibernate
version).
I Hope I didn't miss anything,
Cheers.
DSL cannot handle fieldBridge for @IndexEmbedded fields
-------------------------------------------------------
Key: HSEARCH-682
URL:
https://hibernate.onjira.com/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
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.
For more information on JIRA, see: