Всем привет. Решил написать простенького telegram бота на Spring Boot + MySQL. И наткнулся на проблему. Не могу сохранить обект User в базу. Каждый раз ловлю NullPointerException. Смотрел примеры написания бота на нашем любимом сайте, и там такой проблемы нету. Заранее спасибо!
package telbot;

import entity.User;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
import service.ServiceOfferImp;
import service.ServiceUserImpl;

@Component
public class TelegramBotApp extends TelegramLongPollingBot {
    ServiceOfferImp serviceOfferImp;
    ServiceUserImpl serviceUser;

    User user;

   @Value("${bot.username}")
   private String username;

    @Value("${bot.token}")
    private String token;

    public User getUser() {
        return user;
    }

    @Override
    public String getBotUsername() {
        return username;
    }

    @Override
    public String getBotToken() {
        return token;
    }

    @Override
    public void onUpdateReceived(Update update) {
        if(update.hasMessage() && update.getMessage().hasText()) {
            String message = update.getMessage().getText().trim();
            String chatId = update.getMessage().getChatId().toString();
            String userName = update.getMessage().getFrom().getUserName();


            SendMessage sm = new SendMessage();
            sm.setChatId(chatId);
            sm.setText(message);

            try {

                execute(sm);

//              serviceUser.saveUser(new User(username));

                user.setUsername(username);
                serviceUser.saveUser(user);

                System.out.println("Done !!!");
            }catch (TelegramApiException e) {
//                todo add logging to the project.
                e.printStackTrace();
            }
        }
    }
}

package entity;
import javax.persistence.*;

@Entity
@Table(name = "users2")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    @Column(name = "username")
    private String username;

    public User() {
    }

    public User(String username) {
        this.username = username;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                '}';
    }
}

package repository;

import entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface UserRepository extends JpaRepository<User, Integer> {
    Optional<User> getByUsername(String username);
}

package service;
import entity.User;

public interface ServiceUser {
    void saveUser(User user);
    User getUserByNickName(String nickName);
}

package service;
import entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import repository.UserRepository;
import java.util.Optional;

@Service
public class ServiceUserImpl implements ServiceUser{
    @Autowired
    UserRepository userRepository;

    @Override
    public void saveUser(User user) {
        userRepository.save(user);
    }

    @Override
    public User getUserByNickName(String nickName) {
        User user = null;
        Optional<User> optionalUser = userRepository.getByUsername(nickName);
     if (optionalUser.isPresent()){
         user = optionalUser.get();
     }
        return user;
    }

}