2016-05-31 17 views
0

Ist es möglich, eine Spring Data JPA-Repository-Methode wie diese haben:Spring Data JPA „OR“ mit einzelnen Parameter

User findByEmailOrUserName(String usernameOrEmail); 

Die obige Methode Name nicht als Spring Data JPA löst eine Ausnahme aus, wenn es nicht funktioniert versucht, den zweiten Parameter zu finden, der an den zweiten Eigenschaftsnamen in der Methode gebunden werden muss.

Ich möchte einen Methodennamen, die select t from User t where t.email = :usernameOrEmail OR t.userName = :usernameOrEmail

Hat die Methode Namensabfragen haben eine solche Möglichkeit übersetzen wird?

+0

Nun, nicht sehr elegant, aber Sie können das gleiche Ergebnis erhalten, indem Sie die Repo-Methode definieren, um zwei Parameter 'User findByEmailOrUserName (String email, String userName);', und dann kann der Aufrufer den gleichen Parameter zweimal übergeben: ' findByEmailOrUserName ("mubin", "mubin") "oder" findByEmailOrUserName ("[email protected]", "[email protected]") '. Auf diese Weise kann ein anderer Anrufer sie bei Bedarf mit anderen Parametern aufrufen. Dennoch ist es nicht gut, doppelte Params zu übergeben. –

Antwort

0

Mit aktueller neuester Version von Spring Data JPA (v1.10.2), das ist nicht pos möglich. Solche Anfragen für zukünftige Versionen sehe ich auch nicht.

0

ja können wir Oder für diesen Fall verwenden, aber Sie müssen in Benutzer überprüfen, ob die E-Mail und Benutzernamen Wert genauso wie E-Mail & UserName.for diese Sache gehen in das Eclipse, Frühling-Tool-Suite, was immer IDE Sie sind Verwenden Sie für die Codierung und in der oberen in der Suche oder Schnellzugriff Textfeld ist ihre, geben Sie Gliederung ihre und öffnen Sie Ihre Pojo-Klasse.Sie werden für die Eigenschaft Name E-Mail & userName was sind die Getter Wert.

Beispiel: getuserName();

Kopieren Sie dann nur username, und Sie können es ausdrückte

findByuserNameOremail (String nameOremail);

So müssen Sie basierend auf Ihrem Pojo Klassen Getters tun.

+0

Ich erwähnte bereits, dass mit nur einem Parameter nicht funktioniert. Hast du es selbst getestet? – Mubin

+0

mit einem Parameter ist es nicht möglich mit zwei Parameter es möglich, weil Frühjahr Daten jpa sql Abfragen im Auftrag von Ihnen generiert. –

+0

Ich weiß, dass es mit zwei Parametern möglich ist. Der entscheidende Punkt bei der Frage war, ob es mit einem Parameter möglich ist oder nicht. Bitte lesen Sie die Frage sorgfältig durch, bevor Sie antworten. – Mubin

0

nähme in Ihrer Dienstschicht youhave ein Verfahren wie

Im Service:

@Autowired(required = true) 
private IUserRepository idao; 

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

In Repository:

User findByuserNameOremail(String name,String email);