当前位置: 首页 > 知识库问答 >
问题:

QueryDSL和Hibernate Search isNull和isNotNull查询

赵越
2023-03-14
public class Contact{

    @OneToMany(mappedBy = "contact")
    @OrderBy("startDate DESC")
    @IndexedEmbedded
    private List<AddressTemporal> addressHistory;
}

AddressTemporal类

public class AddressTemporal{


    @NotNull
    @ManyToOne
    @ContainedIn
    private Contact contact;

    @Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO, indexNullAs = Constants.LUCENE_NULL)
    @DateBridge(resolution = Resolution.DAY)
    private Date endDate;

}

我已经将lucene配置为使用字符串常量(“null”)索引空字段,这样我就可以使用该值查询空字段。

我的问题是,我需要执行一个查询,该查询将在AddresshiStory集合中搜索,但只筛选那些whereenddate字段为空的查询。现在

 FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
 fullTextEntityManager.createIndexer().startAndWait();
 QContact c = new QContact("contact");

 SearchQuery<Contact> query = new SearchQuery<> fullTextEntityManager.unwrap(FullTextSession.class), c)
 query.where(c.addressHistory.any().endDate.isNotNull());
query.where(c.addressHistory.any().endDate.eq(Constants.LUCENE_NULL));

谢谢

乌利塞斯

共有1个答案

韩良策
2023-03-14

试试这个

queryBuilder queryBuilder=fulltextsession.getSearchFactory().buildQueryBuilder().forEntity(project.class).get();

querybuilder.keyword().onfield(fieldName).ignoreFieldBridge().matching(“null”).createquery()

 类似资料:
  • 我试图使用querydsl-collections,但未能编写简单的groupBy表达式。以下是我的尝试: 但当我试着运行它的时候。我得到:

  • 而且 现在的问题是: > 我必须如何在ALL_ORDERS子查询的底部执行联接?我已经尝试了以下操作: null 感谢任何帮助。

  • 我得到了以下数据结构 我正在寻找一个查询dsl谓词,它给我的所有出版物,其中任何Author.name包含某个字符串,例如“汉斯” 我试过了: 但是,如果有多个作者在名称中包含“Hans”,则这是抱怨。有没有像出版一样就像一个集合?

  • 问题内容: 我是Spring数据JPA的新手,正在尝试了解如何最好地将其与QueryDSL结合使用。没有QueryDSL,我将可以在SpringData接口中使用@Query注释简单地创建任何查询。 为了获得与使用QueryDSL相同的经验,从我可以看到的角度来看,我需要创建自己的自定义存储库实现,并使我的repo接口扩展我的自定义实现接口,或者将我的所有QueryDSL查询放在包装我的repo的

  • 在一个项目中,我有以下实体:具有连接到关键字的模板部分的模板。这两种关系都是。一些代码: 然后,我尝试使用给定ID查找与某个模板相关的关键字。我使用使用此谓词执行此操作: 由于某些原因,谓词处理得根本不好。尝试调用方法时出现此错误: 组织.hibernate.hql.internal.ast.QuerySyntax 异常: 模板实体部分目录未映射 [选择关键字身份\nfrom mypackage.