В настоящий момент это кажется невозможным, потому что ссылка org.springframework.data.neo4j.repository.query.filter.PropertyComparisonBuilder
, по-видимому, позволяет игнорировать регистр только для "SIMPLE_PROERTY" (равно или равно). См. Метод canIgnoreCase
в том же классе:
private boolean canIgnoreCase(Part part) {
return part.getType() == SIMPLE_PROPERTY && String.class.equals(part.getProperty().getLeafType());
}
Исправление идет с пружиной 5.2 (Мур): https://jira.spring.io/browse/DATAGRAPH-1190 [ 115]
Используйте explicit
ключевое слово в вещи конструктор.
class thing {
public:
explicit thing( int x ) {
printf( "Creating a thing(%d)\n", x );
}
};
Это предотвратит компилятор от неявного вызова вещи конструктор, когда это найдет целое число.
explicit
ключевое слово работает отлично в моем примере, но я понял позже, что мой код реального мира перестал работать на перегруженном методе, не конструкторе. (Мой отказ для выяснения у вопроса, который был подобен, но не то же как, моя фактическая проблема.) Как Mark Ransom указал в комментариях к принятому ответу, explicit
только работы над конструкторами. Я придумал обходное решение, которое решило мою проблему, таким образом, я полагал, что отправлю ее здесь. Новый пример кода:
class thing {
public:
thing( int x ) {
printf( "Creating a thing(%d)\n", x );
}
};
class X {
public:
void do_something( const thing &t ) {
printf( "Creating an X from a thing\n" );
}
};
int main( int, char ** ) {
thing a_thing( 5 );
X an_x;
an_x.do_something( 6 );
return 1;
}
Этот код показывает тот же вывод исходным кодом, но я не могу использовать explicit
зафиксировать его. Вместо этого я добавил закрытый метод, который берет int
:
private:
void do_something( int x );
Теперь, компилятор не создает временный объект, он дает ошибку, потому что я пытаюсь назвать закрытый метод снаружи класса.