我在 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)但是這個在構(gòu)建時會出錯:'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喜歡上面的但在我的查詢結(jié)束時也不能解決任何問題。我究竟做錯了什么 ?這是我的枚舉代碼: 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; }}這個枚舉實現(xiàn)IResponse如下:public interface IResponse{ String getStringValue(); int getId();}
1 回答

互換的青春
TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊
試試這個:
@Query("select user from Users user where user.mobileNumber=?1 and user.status<>?2")
Users FindNotDeletedUserByMobileNumber(String MobileNumber, int status);
并在調(diào)用該存儲庫方法時傳入 -2 作為參數(shù)
添加回答
舉報
0/150
提交
取消