2016-05-31 2 views
0

Можно ли иметь метод хранилища Spring Data JPA, как это:Spring Data JPA «ИЛИ» с одним параметром

User findByEmailOrUserName(String usernameOrEmail); 

выше имя метода не работает, как Spring Data JPA Выдает исключение, если его пытается найти второй параметр, который должен быть привязан ко второму имени свойства в методе.

Я хочу, чтобы имя метода, который будет переводить на select t from User t where t.email = :usernameOrEmail OR t.userName = :usernameOrEmail

есть ли запросы имен метод такой возможности?

+0

ну, не очень элегантный, но вы можете получить тот же результат, указав метод репо, чтобы взять два параметра 'User findByEmailOrUserName (String email, String userName);', а затем вызывающий может передать один и тот же параметр дважды: ' findByEmailOrUserName ("mubin", "mubin") 'или' findByEmailOrUserName ("[email protected]", "[email protected]") '. Таким образом, другой вызывающий абонент может называть его различными параметрами, если это необходимо. Тем не менее, не уверен, что прохождение дублирующих параметров - хорошая идея. –

ответ

0

С текущей последней версии Spring Data JPA (v1.10.2), это не так sible. Я тоже не вижу таких запросов для будущих версий.

0

да мы можем использовать или для этого случая, но вы должны проверить в User ли адрес электронной почты и имя пользователя значение, так же, как Email & UserName.for этой вещи идти в затмении, сюиты весной инструмента, что когда-либо IDE вы использование для кодирования и в верхнем в текстовом поле поиска или быстрого доступа - это их тип, начертите их и откройте свой класс pojo. Вы увидите имя свойства email & userName что такое значение getters.

Ex: getuserName();

Затем скопируйте только имя пользователя, и вы можете поместить его

findByuserNameOremail (String nameOremail);

Нравится программа? Поделись с друзьями!

+0

Я уже упоминал, что не работает только один параметр. Вы сами проверили это? – Mubin

+0

с одним параметром невозможно с двумя параметрами, потому что весенние данные jpa генерируют запросы sql от имени вас. –

+0

Я знаю, что это возможно с двумя параметрами. Весь вопрос в этом вопросе состоял в том, чтобы узнать, возможно ли это с одним параметром или нет. Пожалуйста, внимательно прочитайте вопрос перед ответом. – Mubin

0

предположим в слое службы Yours youhave один метод, как

В службе:

@Autowired(required = true) 
private IUserRepository idao; 

User getByNameOrMail(String name,String email) 
{ 
idao.findByuserNameOremail(name,email) 
} 

В хранилище:

User findByuserNameOremail(String name,String email); 
Смежные вопросы