Добрый день!
Имеется метод в контроллере:
@RequestMapping(value = "/employees/{companyId}/add", method = RequestMethod.POST)
public String addEmployee(@RequestParam("currentId") int currentId,
@PathVariable(value = "companyId") int companyId,
@ModelAttribute("employee")Employee employee){
if (employee.getId() == 0){
this.employeeService.addEmployee(currentId, employee);
} else {
this.employeeService.updateEmployee(employee);
}
return "redirect:/employees/" + companyId;
}
Метод в EmployeeDaoImpl:
@Override
public void addEmployee(int companyId, Employee employee) {
Session session = this.sessionFactory.getCurrentSession();
Company newCompany = companyDao.getCompanyById(companyId);
employee.setCompany(newCompany);
session.persist(employee);
logger.info("Employee saved:" + employee);
}
И метод в CompanyDaoImpl:
@Override
public Company getCompanyById(int id) {
Session session = this.getSessionFactory().getCurrentSession();
Company company = (Company) session.load(Company.class, new Integer(id));
logger.info("Company loaded" + company);
return company;
}
При попытке использовать метод addEmployee выходит ошибка в строке Session session = this.getSessionFactory().getCurrentSession() метода CompanyDaoImpl
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.lang.NullPointerException
org.probation.dao.CompanyDaoImpl.getCompanyById(CompanyDaoImpl.java:49)
org.probation.dao.EmployeeDaoImpl.addEmployee(EmployeeDaoImpl.java:30)
org.probation.service.EmployeeServiceImpl.addEmployee(EmployeeServiceImpl.java:22)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
com.sun.proxy.$Proxy31.addEmployee(Unknown Source)
org.probation.controller.EmployeeController.addEmployee(EmployeeController.java:40)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
CompanyDaoImpl.java
@Repository
public class CompanyDaoImpl implements CompanyDao {
private static final Logger logger = LoggerFactory.getLogger(CompanyDaoImpl.class);
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public SessionFactory getSessionFactory() {
return sessionFactory;
}
@Override
public void addCompany(Company company) {
Session session = this.sessionFactory.getCurrentSession();
session.persist(company);
logger.info("Company saved:" + company);
}
@Override
public void removeCompany(int id) {
Session session = this.sessionFactory.getCurrentSession();
Company company = (Company)session.load(Company.class, new Integer(id));
if (company != null){
session.delete(company);
}
logger.info("Company deleted" + company);
}
@Override
public Company getCompanyById(int id) {
Session session = this.getSessionFactory().getCurrentSession();
Company company = (Company) session.load(Company.class, new Integer(id));
logger.info("Company loaded" + company);
return company;
}
@Override
@SuppressWarnings("unchecked")
public List<Company> companyList() {
Session session = this.sessionFactory.getCurrentSession();
List<Company> companyList = session.createQuery("from Company").list();
for(Company company: companyList){
logger.info("Company list: " + company);
}
return companyList;
}
@Override
public void updateCompany(Company company) {
Session session = this.sessionFactory.getCurrentSession();
session.update(company);
logger.info("Company update" + company);
}
}
Часть mvc-dispatcher-servlet.xml
<!--CompanyDao and CompanyService beans-->
<bean id="companyDao" class="org.probation.dao.CompanyDaoImpl">
<property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory"/>
</bean>
<bean id="companyService" class="org.probation.service.CompanyServiceImpl">
<property name="companyDao" ref="companyDao"/>
</bean>
<!--EmployeeDao and EmployeeService beans-->
<bean id="employeeDao" class="org.probation.dao.EmployeeDaoImpl">
<property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory"/>
</bean>
<bean id="employeeService" class="org.probation.service.EmployeeServiceImpl">
<property name="employeeDao" ref="employeeDao"/>
</bean>
<context:component-scan base-package="org.probation"/>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory"/>
</bean>
Здравствуйте, возможно, стоит попробовать так:
@Autowired
public CompanyDaoImpl(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
Когда мы пишем класс, но не знаем с какими объектами будем работать (допустим храниить переменную) мы можем просто задать переменную типа...
У меня есть webview,который открывает сайт с WebGl или CCS3DНа данном сайте есть кнопка,которая включает гироскоп
хочу чтобы когда на Button JavaFX наводился курсор, он подсвечиваласьКак это сделать? Не нашел подходящего Property