我在 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();
}
互换的青春
相关分类