#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
aString
, а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
.