我在 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 作为参数
添加回答
举报
0/150
提交
取消