2015-02-22 3 views
1

Я также хотел бы использовать поле поиска, используя атрибуты даты, используя QueryDSL и Spring-Data. Для примера: Когда есть записи с 04.01.2015, и я пришел в с 201, он должен быть матч, против 2015 содержит 201.Содержит поиск по атрибуту календаря в Spring-Data и QueryDSL

Что-то, как это должно работать:

// DOES NOT COMPILE!!! 
private static BooleanExpression containsStart(final String search) { 
    return contract.educationStart.containsIgnoreCase(search); 
} 

My Entity Class выглядит следует:

@Entity 
public class Contract { 

    ... 

    @NotNull 
    @Temporal(TemporalType.DATE) 
    @DateTimeFormat(style = "M-") 
    private Calendar educationStart; 

    NotNull 
    @Temporal(TemporalType.DATE) 
    @DateTimeFormat(style = "M-") 
    private Calendar educationEnd; 

    ... 
} 

ответ

1

Я нашел решение и надеюсь, что это поможет другим.

Мои логическое выражение теперь нравится следующим образом:

private static BooleanExpression containsStart(final String search) { 
    final BooleanExpression containsDay = contract.educationStart.dayOfMonth().like("%" + search + "%"); 
    final BooleanExpression containsMonth = contract.educationStart.month().like("%" + search + "%"); 
    final BooleanExpression containsYear = contract.educationStart.year().like("%" + search + "%"); 
    return containsDay.or(containsMonth).or(containsYear); 
} 
Смежные вопросы