0

「 http://localhost:8080/user/person/1604438222 」を呼び出すと、稼働中のスタンドアロンアプリがエラーを下回っています。(データベースから個人IDの詳細を取得しようとしています)

2019-03-01 11:23:34.296 ERROR 52000 --- [nio-8080-exec-1] oaccC[.[.[/].[dispatcherServlet] : サーブレット [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] は、org.hibernate.query.spi.QueryParameterBindingValidator.validate(QueryParameterBindingValidator.java:54) で予期される型 [java.lang.Integer (n/a)] と一致しませんでした ~[hibernate -core-5.3.7.Final.jar:5.3.7.Final] at org.hibernate.query.spi.QueryParameterBindingValidator.validate(QueryParameterBindingValidator.java:27) ~[hibernate-core-5.3.7.Final.jar: 5.3.7.最後】

  1. コントローラ クラス:

    @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. ポジョ

    @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 
                     + "]";
            }
        }
    
4

2 に答える 2

2

2,147,483,647の値ですInteger.MAX_VALUE

2,304,438,636Integer変数に含めるには大きすぎます

Long一般的に、ID の代わりに使用します。longまたはさらに良いことに、ID は理想的には決して存在しないはずなので、プリミティブnull

于 2019-03-01T19:49:04.493 に答える