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

我在 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();

}



守候你守候我
浏览 144回答 1
1回答

互换的青春

试试这个:@Query("select user from Users user where user.mobileNumber=?1 and user.status<>?2")Users FindNotDeletedUserByMobileNumber(String MobileNumber, int status);并在调用该存储库方法时传入 -2 作为参数
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java