java.lang.IllegalArgumentException : Parameter value [1604438222] did not match expected type [java. lang.Integer(不适用)

标签 java spring spring-boot spring-mvc spring-boot-jpa

我有一个独立的应用程序,在调用“http://localhost:8080/user/person/1604438222”时出现以下错误。(尝试从数据库获取人员 ID 详细信息)

2019-03-01 11:23:34.296 错误 52000 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : servlet [dispatcherServlet] 的 Servlet.service()在路径 [] 的上下文中抛出异常 [请求处理失败;嵌套异常是 org.springframework.dao.InvalidDataAccessApiUsageException:参数值 [1604438222] 与预期类型 [java.lang.Integer (n/a)] 不匹配;嵌套异常是 java.lang.IllegalArgumentException:参数值 [1604438222] 与根本原因与预期类型 [java.lang.Integer (n/a)]] 不匹配

java.lang.IllegalArgumentException:参数值 [1604438222] 与预期类型不匹配 [java.lang.Integer (n/a)] 在 org.hibernate.query.spi.QueryParameterBindingValidator.validate(QueryParameterBindingValidator.java:54) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final] 在 org.hibernate.query.spi.QueryParameterBindingValidator.validate(QueryParameterBindingValidator.java:27) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]

  1. Controller 类:

    @RestController
    @RequestMapping("/user")
    public class UserController {
    
    
        @Autowired
        PersonRepository personRepository; 
    
         @GetMapping("/person/{prsId}")
         public Person getPerson(@PathVariable Long prsId) {
              return personRepository.findByPrsId(prsId);
         }
    }
    
  2. 存储库:

    @Repository
    public interface PersonRepository extends  CrudRepository<Person, Long>
    {
        Person findByPrsId(Long Id);
    
    }
    
  3. POJO

    @Entity
    @Table(name = "Person")
    public class Person {
    
        @Column(name = "Prs_Id")
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Integer prsId;
    
        @Column(name = "P_Email_Internet_Addr", nullable = true, length = 255)
        private String email;
    
    
        protected Person() {
        }
    
    
        public Integer getPrsId() {
            return prsId;
        }
    
        public void setPrsId(Integer prsId) {
            this.prsId = prsId;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
    
        @Override
            public String toString() {
                    return "User [prsId=" + prsId + ", email=" + email 
                     + "]";
            }
        }
    

最佳答案

2,147,483,647Integer.MAX_VALUE

的值

2,304,438,636 太大,无法包含在 Integer 变量中

一般情况下,请使用 Long 代替您的 id。或者甚至更好,原始的 long 因为理想情况下您的 ID 不应该为 null

关于java.lang.IllegalArgumentException : Parameter value [1604438222] did not match expected type [java. lang.Integer(不适用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54951349/

相关文章:

java - 使用 Firebase 数据库无法进行分页

java - 用户搜索功能使用 Java 驱动程序查询 MongoDB 中的数据

java - POI中如何设置单元格数据类型?

spring-boot - Spring Boot 应用程序内存泄漏缓慢

java - Spring 是否有使用 setter 和 @JsonProperty 进行反序列化的替代方法

java - Spring RestTemplate getForObject 获取 404

java - 如何在 Liferay 中重新加载整个页面

java - Hibernate:删除前检查外键约束违规?

spring - Maven、Scala、Spring、AspectJ

spring-boot - rsocket - 如何平衡负载