Nesting @IndexedEmbeddeds with "includePaths" results in invalid path restrictions

Description

For instance:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 @Entity @Indexed private static class A { @Id @GeneratedValue private Long id; @Field(analyze = Analyze.NO) private String foo; } @Entity private static class B { @Id @GeneratedValue private Long id; @OneToOne @IndexedEmbedded(includePaths = "foo") // Include only "a.foo" private A a; } @Entity @Indexed private static class C { @Id @GeneratedValue private Long id; @OneToOne @IndexedEmbedded // Include every field of "b" private B b; }

This will not include b.a.foo in the resulting document for C, even though we would think so (since the @IndexedEmbedded in C doesn't mention any restriction on what to embed).

The reason is, we only take into account the top-level "includePaths", and if it's empty, we interpret that as "don't include anything" in embedded entities...

The issue can be worked around by specifying explicitly the paths to include on C.b.

Note that this issue is here since 5.5.0.Final at least (I didn't check previous versions).

Environment

None

Status

Assignee

Yoann Rodière

Reporter

Yoann Rodière

Labels

None

Suitable for new contributors

None

Feedback Requested

None

Components

Fix versions

Affects versions

5.5.6.Final
5.5.0.Final
5.6.0.CR1

Priority

Major