我想在 Spring JPA 规范的 WHERE 子句中包含括号

问题描述 投票:0回答:1

如何在我的存储库中编写此查询

**这是我的sql查询**

select user, email, mot_de_passe
from utilisater
where (user='....' or email='...') and mot_de_passe= '...'

我尝试这样做

@Repository("UtilisateurRepo")
public interface UtilisateurRepo extends JpaRepository<Utilisateur,String> {
    Utilisateur findByUserOrEmailAndMdp(String user, String mail, String mdp);
}

但是得到了不同的结果,就像我正在写的一样:

select user, email, mot_de_passe
from utilisater
where user='....' or email='...' and mot_de_passe= '...'
spring spring-boot spring-mvc spring-data-jpa spring-data
1个回答
0
投票

为了可维护性,我将编写以下自定义查询:

@Query("SELECT u FROM utilisater u WHERE (u.user='....' OR u.email='...') AND u.mot_de_passe= '...'")

查询是明确的,对于未来的维护者来说不会有任何歧义。由于您要返回单个实体,因此您需要保证 where 子句中的三个属性之间具有一定的唯一性。

© www.soinside.com 2019 - 2024. All rights reserved.