【neo4j】解决:BooleanOperator missing for filter with property name XXX.

问题描述

在使用neo4j-ogm进行条件查询时,写了多个查询条件Filter,并将其全部添加到了Filters中,代码如下:

// 建立查询条件

filters.add(new Filter("chineseName", ComparisonOperator.LIKE, requestStaff.getChineseName()));

filters.add(new Filter("englishName", ComparisonOperator.LIKE, requestStaff.getEnglishName()));

filters.add(new Filter("gender", ComparisonOperator.LIKE, requestStaff.getGender()));

session.loadAll(StaffNode.class, filters);

但是当数量多于1个时就会报错

报错信息

org.neo4j.ogm.exception.core.MissingOperatorException: 
	BooleanOperator missing for filter with property name englishName. 
	Only the first filter may not specify the BooleanOperator.

报错原因

在查看了Filter类的源码后发现注释是这么写的:

/**
  * The boolean operator used to append this filter to the previous ones.
  * Mandatory if the filter is not the first and only filter in the list.
  */
 private BooleanOperator booleanOperator = BooleanOperator.NONE;

翻译过来就是:用于将此筛选器附加到上一个筛选器的布尔运算符。如果筛选器不是列表中的第一个也是唯一一个筛选器,则为必填项。

再看上方我写的代码,好像是没有设置BooleanOperator,那给他设置不就完了。

问题解决

先看了看有没有直接的构造方法,然鹅并没有发现(也可能是我大意了)
那就用setter方法呗,Filter提供了一个setter方法用于赋值:

public void setBooleanOperator(BooleanOperator booleanOperator) {
	this.booleanOperator = booleanOperator;
}

所以将源代码修改为:

// 建立查询条件
filters.add(new Filter("chineseName", ComparisonOperator.LIKE,requestStaff.getChineseName() );

// 用于将此筛选器附加到上一个筛选器的布尔运算符。
// 如果筛选器不是列表中的第一个也是唯一一个筛选器,则BooleanOperator为必填项。
Filter filter = new Filter("englishName", ComparisonOperator.LIKE, requestStaff.getEnglishName() + '*');
filter.setBooleanOperator(BooleanOperator.AND);
filters.add(filter);

filter = new Filter("gender", ComparisonOperator.LIKE, requestStaff.getGender());
filter.setBooleanOperator(BooleanOperator.AND);
filters.add(filter);

session.loadAll(StaffNode.class, filters);

问题成功解决~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别来BUG求求了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值