Исключение числового форматирования для bigint

#java #spring-jdbc

#java #spring-jdbc

Вопрос:

Я использую базу данных как postgresql, подключаясь к базе данных с помощью spring jdbctemplate.

Столбец phone в базе данных является phone bigint Источником, вызывающим java.lang.NumberFormatException

             public UserDetails getUserDetails(int phone) {
    
            String sql = "SELECT * FROM users where phone = ?";
            UserDetails users = (UserDetails) jdbcTemplate.query(sql,new Object[]{phone},
                    new BeanPropertyRowMapper<UserDetails>(UserDetails.class));
            return users;
            }

**Error:-**

> For input string: "7894561230"; nested exception is
> java.lang.NumberFormatException: For input string: "7894561230"
  

Мой компонент :-

     public class UserDetails {
        
        private int userId;
        private String name;
        private String email;
        private String phone;
    }
  

Комментарии:

1. Почему в вашем классе Java есть phone a String , а bigint в базе данных — a? Эти два типа должны совпадать (они должны быть text в базе данных)

2. @a_horse_with_no_name после смены номера телефона со String на int я получаю разрешение [org.springframework.web.method.annotation. Исключение MethodArgumentTypeMismatchException: не удалось преобразовать значение типа ‘java.lang. Строка ‘ в требуемый тип ‘int’; вложенным исключением является java.lang.NumberFormatException: Для входной строки: «7894561230»]

3. это указано для входной строки, но я предоставляю int в качестве входных данных, как показано в методе

4. значение @Gen 7894561230 будет вне диапазона для int. попробуйте это с long

Ответ №1:

У вас проблема с int .

В Java int может храниться любое целое число от -2147483648 до 2147483647 , и ваше значение 7894561230 для него находится вне диапазона. Поэтому используйте long вместо int .