Проблема
Это может привести к ошибке NullPointerException (NPE), если я добавляю «И», хотя предыдущий фильтр не существует.
Код
Код: Выделить всё
public List getMyQuery(FiltersDTO filters) {
JPAQuery myEntity = getJPAQueryFactory().selectFrom(myEntity).limit(20);
BooleanExpression whereClause = null;
boolean whereClauseAdded = false;
boolean ifNoFilter = Stream.of(myEntity).allMatch(Objects::isNull);
if (ifNoFilter) {
return new ArrayList(myEntity.fetchAll().fetch());
}
if (filters.getId() != null) {
whereClause = myEntity.id.eq(filters.getId());
whereClauseAdded = true;
}
if (filters.getName() != null) {
if (whereClauseAdded) {
whereClause = whereClause.and(myEntity.id.eq(filters.getName()));
} else {
whereClause = myEntity.id.eq(filters.getName());
whereClauseAdded = true;
}
}
// remaining code
}
Есть ли лучший способ добавить фильтры, не рискуя получить NPE?
Подробнее здесь: https://stackoverflow.com/questions/748 ... n-querydsl
Мобильная версия