================ Original ISSUE (NOT duplicated) ==================
I am using Spring MVC, maven, Spring Data JPA, hsqldb... I made Spring Data JPA Entities, Repositories and Services(declare interfaces). (all related code is posted with comments [1],[2])
and generally, working ok. however....
one of custom repository function gets error even before compilation.
These two repository functions to search Task in db with different id (each task entity contains two different ids : TaskId, task_id)
'Invalid derived query! No property find found for type Task!'
My code looks like:
=== TaskRepository.java ======
public interface TaskRepository extends JpaRepository<Task, Integer>{
Task findByTaskId(String taskId); //[1] works find
Task findOnebyTaskid(String task_id); // [2][Error message] Invalid derived query! No property find found for type Task!
========= TaskService.java ================
@Service
public class TaskService {
@Autowired
private TaskRepository taskRepository;
public Task findByTaskID(String taskId){ //[1] works find
return taskRepository.findByTaskId(taskId);
}
public Task findOnebyTaskid(String task_id){ // [2]
return taskRepository.findOnebyTaskid(task_id);
}
========= Task.java =======================
@Entity
public class Task{
//[1] works find
private String taskId;
public String getTaskId() {
return taskId;
}
@Column(unique = true) // [Q]necssary or not?
public void setTaskId(String taskId) {
this.taskId = taskId;
}
// [2]
private String task_id;
public String getTask_id() {
return task_id;
}
public void setTask_id(String task_id) {
this.task_id = task_id;
}
====== Test.java ================
Task findtaskbyID = taskService.findByTaskID(taskID); //[1] - works find
Task findbytaskid = taskService.findOnebyTaskid(task_id); // [2]
I am using these versions (just in case, if need to check):
spring framework: ver 4.0.2.RELEASE
hsqldb: ver 2.3.2
spring-data-jpa: ver 1.7.2.RELEASE
hibernate-entitymanager: ver 4.3.8.Final
Thanks in advance. [Solution]
@Query("select t from Task t where t.task_id = ?1")
Task findOnebyTaskid(String task_id);
==== UPDATED ISSUE (Duplicated but Not the original issue) ===========
After apply this @Query("select t from Task t where t.task_id = ?1")
by advice by @RC :
TaskRepository.java ...
@Query("select t from Task t where t.task_id = ?1")
Task findOnebyTaskid(String task_id);
it works for the first time, then it gets error from second time of editing other tasks.
Caused by:
java.lang.NullPointerException
at my.forecastAway.controller.TaskController.editTask(TaskController.java:352)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:711)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1644)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)