My application fails because my ticket repository is null
Spring Data JPA findById, Part 2
You can reference my project at: (https://github.com/andre1011green/PracticeProject2.git) with the following edits below
When I run my app I get the following error:
java.lang.NullPointerException: Cannot invoke “com.Practice.PracticeProject.Repositories.TicketRepository.findAllByEmployeeID(int)” because “ticketRepository” is null
at com.Practice.PracticeProject.Service.Login.AllMyTickets(Login.java:80) ~[classes/:na]
public List<Tickets> AllMyTickets(int id, TicketRepository ticketRepository )
{
List<Tickets> myTickets = ticketRepository.findAllByEmployeeID(id); ==> Here is the line of code this is breaking:
if(myTickets.isEmpty())
{
System.out.println("Did not find any Tickets for given empoyeeid");
System.exit(0);
}
return myTickets;
}
}
Why am I getting a null pointer exception?
Here is the login class:
package com.Practice.PracticeProject.Service;
import com.Practice.PracticeProject.Model.Tickets;
import com.Practice.PracticeProject.Repositories.TicketRepository;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.stereotype.Service;
import java.security.Principal;
import java.util.List;
@Service
public class Login
{
Authentication currentUser;
public Login() { }
public Login(Authentication currentUser)
{
this.currentUser = currentUser;
}
public String loggInUser(Principal principal, UserDetailsService userDetailsService)
{
UserDetails userDetails = userDetailsService.loadUserByUsername(principal.getName());
if (userDetails != null)
{
System.out.println("Andre the current user is " + userDetails.getUsername());
return userDetails.getUsername();
}
else
{
System.out.println("No current user");
return "No Current User";
}
}
public String currentUserInfo(Principal principal, UserDetailsService userDetailsService)
{
UserDetails userDetails = userDetailsService.loadUserByUsername(principal.getName());
if (userDetails != null)
{
return userDetails.toString();
}
else
{
return "No Current User";
}
}
public List<Tickets> AllMyTickets(int id, TicketRepository ticketRepository )
{
List<Tickets> myTickets = ticketRepository.findAllByEmployeeID(id);
if(myTickets.isEmpty())
{
System.out.println("Did not find any Tickets for given empoyeeid");
System.exit(0);
}
return myTickets;
}
}
Here is the repository class:
package com.Practice.PracticeProject.Repositories;
import com.Practice.PracticeProject.Model.Tickets;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface TicketRepository extends JpaRepository<Tickets, Integer>
{
@Query(nativeQuery = true, value = "SELECT * FROM tickets WHERE ticketid = :ticketid")
List<Tickets> findAllByEmployeeID(@Param("ticketid") int ticketid);
}
Thanks
I am expecting my application to return a list of tickets via Spring JPA, I have tried various ways to inject TicketsRepository but I always get a null pointer exception at runtime. This is the same project from my previous post with the new edits posted here.