[SPRING] 오류 : java.lang.NoSuchMethodException : java.lang.Long. <init> ()에서 봄 MVC
SPRING오류 : java.lang.NoSuchMethodException : java.lang.Long. ()에서 봄 MVC
데이터베이스에서 학생 개체를 읽는 동안이 오류가 발생합니다.
org.springframework.beans.BeanInstantiationException : [java.lang.Long] 인스턴스 생성에 실패했습니다 : 기본 생성자가 없습니다. 상자의 예외는 java.lang.NoSuchMethodException입니다. java.lang.Long. () org.springframework.beans.BeanUtils.instantiateClass (BeanUtils.java:107)
전체 스택 추적 :
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.lang.Long]: No default constructor found; nested exception is java.lang.NoSuchMethodException: java.lang.Long.<init>()
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.lang.Long]: No default constructor found; nested exception is java.lang.NoSuchMethodException: java.lang.Long.<init>()
org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:107)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveModelAttribute(HandlerMethodInvoker.java:775)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:368)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:172)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NoSuchMethodException: java.lang.Long.<init>()
java.lang.Class.getConstructor0(Class.java:3082)
java.lang.Class.getDeclaredConstructor(Class.java:2178)
org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveModelAttribute(HandlerMethodInvoker.java:775)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:368)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:172)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Student.java
@Entity
@Table(name="Student")
public class Student implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="studentId")
Long studentId;
@Column(name="studentName")
String studentName;
Controller.java
@RequestMapping(value = "/read.html")
public String readStudent(Model model, @ModelAttribute("studentId") Long studentId) {
Student student = null;
studentId = 2l;
try{
student = serviceFile.readStudent(studentId);
}catch(Exception e){
model.addAttribute("message", "Some thing went wrong !!!! Exception occoured");
return "message";
}
model.addAttribute("student", student);
return "read";
}
daoImpl.java
@Repository
@Transactional
public class DaoImplFile implements DaoFile {
private EntityManager entityManager;
public EntityManager getEntityManager() {
return entityManager;
}
@PersistenceContext
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
@Override
public Student read(Long studentId) throws NullPointerException {
Student student = entityManager.find(Student.class, studentId);
if (student!=null) {
return student;
} else {
return null;
}
}
해결법
-
==============================
1.@ModelAttribute ( "studentId") 긴 studentId는 Spring이이 Long 객체를 제공 할 수있는 메소드를 찾지 못하기 때문에 문제의 근원이므로 메소드를 인스턴스화하고 메소드 인수로 전달하려고 시도합니다. 이 문제를 해결하려면 다음 중 하나를 수행하십시오.
@ModelAttribute ( "studentId") 긴 studentId는 Spring이이 Long 객체를 제공 할 수있는 메소드를 찾지 못하기 때문에 문제의 근원이므로 메소드를 인스턴스화하고 메소드 인수로 전달하려고 시도합니다. 이 문제를 해결하려면 다음 중 하나를 수행하십시오.
공식 문서
@RequestMapping(path = "/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST) public String processSubmit(@ModelAttribute Pet pet) { }
편집하다 studentId가 UI에서 보낸 매개 변수 이름이라면 @RequestParam을 다음과 같이 사용할 수 있습니다.
@RequestMapping(value = "/read.html") public String readStudent(Model model, @RequestParam("studentId") Long studentId) { Student student = null; studentId = 2l; try { student = serviceFile.readStudent(studentId); } catch(Exception e) { model.addAttribute("message", "Some thing went wrong !!!! Exception occoured"); return "message"; } model.addAttribute("student", student); return "read"; }
-
==============================
2.studentId 필드 유형을 Long에서 long으로 변경해야합니다.
studentId 필드 유형을 Long에서 long으로 변경해야합니다.
그리고 내 눈에 그냥 튀는 또 하나의 무관 한 것 :
if (student!=null) { return student; } else { return null; }
이 말은 정확히 다음과 같습니다.
return student;
from https://stackoverflow.com/questions/35807064/error-java-lang-nosuchmethodexception-java-lang-long-init-in-spring-mvc by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 WebFlux - ServerResponse 잭슨 Serializer 문제 (0) | 2019.07.18 |
---|---|
[SPRING] Zuul 웹 소켓 (0) | 2019.07.18 |
[SPRING] 업데이트 대신 Spring JPA / Hibernate 트랜잭션 강제 삽입 (0) | 2019.07.18 |
[SPRING] Spring Data JPA는 내부적으로 어떻게 작동합니까? (0) | 2019.07.18 |
[SPRING] JUnit 테스트에 java.lang.Exception이있는 initializationError가 있습니다. 일치하는 테스트가 없습니다. (0) | 2019.07.18 |