2016-05-16 3 views
0

Я пытаюсь получить все строки из таблицы «Местоположение». Но мой метод DAO всегда возвращает NullPointerException. Я не знаю, почему это происходит. Я пробовал hql, критерии и т. Д., Но результат был тот же.Hibernate. Получение всех строк возвращает nullPointerException

Контроллер

@Controller 
public class HomeController { 

@Autowired 
private UserService userService; 
private FuturePlanService futurePlanService; 
private LocationService locationService; 

@RequestMapping(value = "/user/{id}/addPlan", method = RequestMethod.GET) 
public ModelAndView addFuturePlan(@PathVariable int id){ 
    ModelAndView modelAndView = new ModelAndView("add_future"); 
    User user = userService.findById(id); 
    FuturePlan futurePlan = new FuturePlan(); 
    List<Location> locations = locationService.getAll(); 

    modelAndView.addObject("ownerUser", user); 
    modelAndView.addObject("future", futurePlan); 
    modelAndView.addObject("locations", locations); 

    return modelAndView; 
} 

Расположение Dao

@Repository 
public class LocationDaoImpl implements LocationDao { 

@Autowired 
SessionFactory sessionFactory; 

@Override 
public Location findLocation(int id) { 
    Session session = sessionFactory.openSession(); 
    Location location = (Location) session.get(Location.class, id); 
    session.close(); 
    return location; 
} 

@Override 
public Location findLocation(String name) { 
    Session session = sessionFactory.openSession(); 
    Criteria cr = session.createCriteria(Location.class); 
    cr.add(Restrictions.eq("lName", name)); 
    cr.setMaxResults(1); 
    Location location = (Location) cr.uniqueResult(); 
    session.close(); 
    return location; 
} 

@Override 
public List<Location> getAll() { 
    Session session = sessionFactory.openSession(); 
    List<Location> list = session.createQuery("from Location").list(); 
    session.close(); 
    return list; 
} 

}

Расположение Entity

@Entity 
public class Location { 

@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
private int lId; 
private String lName; 

public Location() { 
    super(); 
} 

public Location(int lId, String lName) { 
    super(); 
    this.lId = lId; 
    this.lName = lName; 
} 

public int getlId() { 
    return lId; 
} 

public void setlId(int lId) { 
    this.lId = lId; 
} 

public String getlName() { 
    return lName; 
} 

public void setlName(String lName) { 
    this.lName = lName; 
} 

HTTP Status 500 - обработка запроса не удалось; Вложенным исключением является java.lang.NullPointerException. В этой строке Расположение списка = locationService.getAll() ;. В контроллере.

Если вам нужно больше файлов, просто скажите мне.

ответ

1

@Autowired относится только к непосредственному члену класса. Добавьте его в locationService

@Autowired 
private LocationService locationService; 

Сделайте то же самое для futurePlanService, если он имеет в своих планах на будущее;)

+0

Thx Reimeus! Я думал, что могу использовать несколько сервисов под одной аннотацией. Ваше решение решило мою проблему. –

Смежные вопросы