поле поиска в списке @IndexedEmbedded - PullRequest
0 голосов
/ 04 августа 2020

У меня есть сущность, у которой есть список сущностей, я добавил @IndexedEmbedded в этот список, чтобы иметь возможность искать в нем. Итак, я хочу найти все объекты с идентификатором 123 и атрибутом x, равным заданному значению. Я пробовал использовать приведенный ниже код, но у меня возникла эта ошибка

Не удалось найти поле bEntity.x в com.xx.xx.AEntity

@Entity
@Indexed
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class AEntity implements Serializable {

    private static final long serialVersionUID = 1L;
    
    @Id
    @Field
    private String id;

    @IndexedEmbedded
    @ElementCollection
    private Set<BEntity> bEntity;
    
}


@Entity
@IdClass(BPK.class)
public class BEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @Field(name = "x_number")
    private String x;

    @Id
    @Field(name = "y_number")
    private String y;
    
}

QueryBuilder queryBuilder = getFullTextEntityManager().getSearchFactory().buildQueryBuilder().forEntity(AEntity.class).get();    
Query query = queryBuilder.bool()
            .must(queryBuilder.keyword().onField("id").matching("123").createQuery())
            .must(queryBuilder.keyword().onField("bEntity.x").matching(str).createQuery())
            .createQuery();

1 Ответ

0 голосов
/ 04 августа 2020

Ваше поле называется bEntity.x_number, а не bEntity.x:

    @Field(name = "x_number")

Вот почему вы получаете эту ошибку.

Используйте bEntity.x_number вместо bEntity.x в ваш запрос, и все будет в порядке.

...