Hi,

I started to look at HSEARCH-1494 [1] which deals with an unexpected exception 
is thrown when @IndexedEmbedded is used.
Easiest to explain with an example:

@Entity
@Indexed
public class A {
        @Id
        @GeneratedValue
        private long id;

        @OneToOne
        @IndexedEmbedded
        private B b;
}

@Entity
public class B {
        @Id
        @GeneratedValue
        private Timestamp id;

        @Field
        private String foo;

        public Timestamp getId() {
                return id;
        }

        public String getFoo() {
                return foo;
        }
}


A includes B via @IndexedEmbedded and is only interested in including the ‘foo’ 
field. However, atm we implicitly index B.id as well.
In this particular case an exception is thrown, because we don’t know which 
field bridge to use for B.id.

This also relates to HSEARCH-1092 [2], where the include path feature of 
@IndexedEmbedded is used. Even though the configured 
paths don’t include the ids, they are added which increases the index size 
unnecessarily (not really sure whether it really matters in practice).

If we skip the implicit inclusion of id properties, the user will need to add 
an explicit @Field in case he wants to include an id property via indexed
embedded. If the embedded entity itself is not indexed, I think this makes 
sense. But what if the embedded entity is indexed itself? Does it seem
wrong in this case to specify an additional @Field? Do we need some additional 
configuration element? 

Thoughts?

—Hardy


[1] https://hibernate.atlassian.net/browse/HSEARCH-1494
[2] https://hibernate.atlassian.net/browse/HSEARCH-1092 
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to