为了账号安全,请及时绑定邮箱和手机立即绑定

在查询、jpa 存储库和 Spring Boot 中使用非硬编码值

在查询、jpa 存储库和 Spring Boot 中使用非硬编码值

守候你守候我 2021-06-30 09:59:08
我在 spring boot 项目中使用了一个带有硬编码值的查询,这很好:    @Query("select user from Users user where user.mobileNumber=?1 and not user.status=-2")Users FindNotDeletedUserByMobileNumber(String MobileNumber);但是,我想使用非硬编码值,例如。从枚举中读取,我试过这个:    @Query("select user from Users user where user.mobileNumber=?1 and not user.status=com.taxikar.enums.User_Status.Deleted")Users FindNotDeletedUserByMobileNumber(String MobileNumber)但是这个在构建时会出错:'userRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract com.taxikar.entity.Users com.taxikar.repository.UserRepository.FindNotDeletedUserByMobileNumber(java.lang.String)!at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588) ~[spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]我在我的其他类中使用这个枚举值并且它们工作正常,例如:if (user.getStatus() == User_Status.Deleted.getId())            return new BaseResponse(BR_Status.error.getId(), BR_ErrorCodes.NotAuthorizedUser.getStringValue() + "01",                    "error 755", user.getId());即使使用.getId或.getStringValue喜欢上面的但在我的查询结束时也不能解决任何问题。我究竟做错了什么 ?这是我的枚举代码:    public enum User_Status implements IResponse{    Deleted(-2),    Unauthorized(-1),    NotCompleteGeneralInfo(0),    CompleteGeneralInfo(1);    private int value;    private String stringValue;    User_Status(int value)    {        this.value = value;    }    User_Status(String stringValue){this.stringValue=stringValue;}    @Override    public int getId()    {        return value;    }    @Override    public String getStringValue()    {        return stringValue;    }}这个枚举实现IResponse如下:public interface IResponse{    String getStringValue();    int getId();}
查看完整描述

1 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

试试这个:


@Query("select user from Users user where user.mobileNumber=?1 and user.status<>?2")

Users FindNotDeletedUserByMobileNumber(String MobileNumber, int status);

并在调用该存储库方法时传入 -2 作为参数


查看完整回答
反对 回复 2021-07-07
  • 1 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信