Hibernate, repository.save - java.lang.NullPointerException: null - пока объект существует

0

Я пишу этот код, чтобы просто сохранить новые данные в mySql db, создать класс, репозиторий и главный контроллер, он действительно работает для одного класса, но не для этого, оцените некоторые указатели, поскольку я действительно не понимаю, почему нулевой указатель:

Код: главный контроллер:

    @GetMapping(path = "/addExchange") 
public @ResponseBody String addNewExchange (@RequestParam String exchange)
{
    //check1
    System.out.println("creating Exchange constructor");
    Exchange e = new Exchange(); 
    //check 2
    System.out.println("created exchange constructor, " + exchange);
    e.setE_name(exchange);
    //check 3
    System.out.println("Exhange name is, " + e.getE_name());
    //check 4
    System.out.println(e);
    exchangeRepository.save(e); 
    return "Saved Exchange";
}

Ошибка вывода из консоли Eclipse: мои проверки ниже показывают, что объект выбран из сопоставления: - создание конструктора Exchange - созданный конструктор обмена, оранжевый - имя участника, оранжевый - обмен [idexchange = 0, e_name = orange]

2018-05-21 15: 59: 43.528 ОШИБКА 5118 --- [nio-8080-exec-4] oaccC [. [. [/]. [DispatcherServlet]: Servlet.service() для сервлета [dispatcherServlet] в контексте с path [] выбрал исключение [Ошибка обработки запроса; вложенное исключение - это java.lang.NullPointerException] с первопричиной

java.lang.NullPointerException: null на com.instantmoney.MoneyServices.MainController.addNewExchange(MainController.java:47) ~ [classes/: na]

Репозиторий Exchange:

public interface ExchangeRepository extends CrudRepository<Exchange, Long> {

}

Класс обмена

    @Entity 
public class Exchange {

@Id
@GeneratedValue (strategy = GenerationType.AUTO)
private int idexchange; 

private String e_name;

public Exchange() {}

//Геттеры и сеттеры

Curl

http://localhost:8080/moneyservice/addExchange?exchange=orange
  • 0
    Я думаю, что exchangeRepository имеет значение null, не могли бы вы добавить код MainController ?
  • 0
    поскольку мы не можем увидеть исходные номера строк, отметьте эту строку: MainController.java:47 в своем коде
Показать ещё 4 комментария
Теги:
spring
hibernate

1 ответ

0
Лучший ответ

Попробуй это

@Controller
public class ExchangeController {    

   @RequestMapping(path = "/addExchange", method = RequestMethod.POST) 
   public @ResponseBody String addNewExchange (@RequestParam String exchange)
   {
    if (exchange != null ) {
       Exchange e = new Exchange(); 
       e.setE_name(exchange);
       exchangeRepository.save(e); 
       return "Saved Exchange";
    } else {
       return new BadRequestException("exchange name can not be null!");
    }
   }

   @Autowired
   public ExchangeController(ExchangeRepository exchangeRepository) {
       this.exchangeRepository = exchangeRepository;
   }

   private ExchangeRepository exchangeRepository;
}
  • 0
    Я также использовал вашу помощь Devratna, чтобы добавить! = Null было полезно, я добавил этот кусок кода, чтобы избежать нулевых исключений. Спасибо за помощь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню