繁体   English   中英

列表@IndexedEmbedded 中的搜索字段

[英]search field in List @IndexedEmbedded

我有一个包含实体列表的实体,我在此列表中添加了@IndexedEmbedded以便能够搜索到它。 所以我想搜索 ID 为 123 且属性 x 等于给定值的所有实体。 我尝试使用下面的代码,但出现此错误

无法在 com.xx.xx.AEntity 中找到字段 bEntity.x

@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();

您的字段称为bEntity.x_number ,而不是bEntity.x

    @Field(name = "x_number")

这就是您收到此错误的原因。

在您的查询中使用bEntity.x_number而不是bEntity.x ,您应该没问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM