2016-05-31 72 views
0

是否有可能有一個春天JPA的數據存儲庫的方法是這樣的:春數據JPA「或」單參數

User findByEmailOrUserName(String usernameOrEmail); 

上述方法名稱不作爲春季的數據JPA工作拋出一個異常時,它試圖找到需要綁定到方法中第二個屬性名稱的第二個參數。

我想,這將轉化爲select t from User t where t.email = :usernameOrEmail OR t.userName = :usernameOrEmail

方法名稱是否方法名稱查詢有這樣的可能性?

+0

好吧,不是很優雅,但你可以通過定義repo方法來獲得相同的結果,以獲得兩個參數'User findByEmailOrUserName(String email,String userName);',然後調用者可以傳遞相同的參數兩次:'' findByEmailOrUserName(「mubin」,「mubin」)或者findByEmailOrUserName(「[email protected]」,「[email protected]」)。這樣,如果需要,其他調用者實際上可以用不同的參數調用它。不過,不確定傳遞重複參數是個好主意。 –

回答

0

利用當前最新的Spring數據的版本JPA(v1.10.2),這不是pos錫布爾赫丁。我沒有看到任何這樣的未來版本的要求。

0

是的,我們可以使用或針對這種情況,但你需要在用戶檢查電子郵件和用戶名的值相同電子郵件& UserName.for這件事情是否去日食,春天工具套件不斷IDE你是什麼用於編碼和在上面搜索或快速訪問文本框是他們的類型輪廓他們和打開你的pojo class.you將看到屬性名稱電子郵件 & userName什麼是getters值。例如:

例如:getuserName();

然後只複製用戶名,你可以把它

findByuserNameOremail(字符串nameOremail);

像這樣你必須根據你的pojo類getters來做。在你的服務層

+0

我已經提到只有一個參數不起作用。你自己測試過了嗎? – Mubin

+0

有一個參數,它將不可能有兩個參數,因爲spring數據jpa代表你生成sql查詢。 –

+0

我知道這是可能的兩個參數。提出這個問題的要點是要知道一個參數是否可能。在回答之前請仔細閱讀問題。 – Mubin

0

想揮霍一個方法,像

在服務:

@Autowired(required = true) 
private IUserRepository idao; 

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

在倉庫:

User findByuserNameOremail(String name,String email);