2014-09-24 2 views
3

Я работаю в весеннем проекте MVC и весенних данных с набором весенних инструментов, я хочу передать аргумент даты собственному запросу, у меня это до сих пор.Весна Данные JPA Как передать параметр даты

Мой метод запроса внутри интерфейса, который расширяет JpaRepository

@Query(value = 
      "SELECT " 
       + "a.name, a.lastname 
      + "FROM " 
       + "person a, " 
       + "myTable b " 
      + "WHERE " 
      + "a.name= ?1' " 
      + "AND a.birthday = ?2 ", 
     nativeQuery = true) 
    public ArrayList<Object> personInfo(String name, String dateBirthDay); 

Метод, который реализует этот определение интерфейса:

public ArrayList<Object> getPersonsList(String name, String dateBirthDay) { 

      ArrayList<Object> results= null; 

      results= serviceAutowiredVariable.personInfo(name, dateBirthDay); 

      return results; 
     } 

и это, как я называю это из моего класса контроллера.

personsList= _serviceAutowiredVariable.getPersonsList("Jack", "TO_DATE('01-08-2013', 'DD-MM-YYYY')"); 

Я полагаю, что в этой строке "AND a.birthday = ?2 "?2 это равняется этой строке TO_DATE('01-08-2013', 'DD-MM-YYYY')

, но я получаю эту ошибку, когда я запускаю мой код

[Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: org.hibernate.exception.DataException: could not extract ResultSet; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.DataException: could not extract ResultSet] root cause 
java.sql.SQLDataException: ORA-01858: a non-numeric character was found where a numeric was expected 

ERROR: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - ORA-01858: a non-numeric character was found where a numeric was expected 
+1

Просто передайте объект 'Date' вместо' St ring'. –

ответ

6

Вы можете использовать такую ​​конструкцию:

import org.springframework.data.repository.query.Param; 
... 

@Query(value = 
    " SELECT a.id, a.lastname FROM person a" + 
    " WHERE a.name = :name AND a.birthday = :date ", nativeQuery = true) 
public List<Object[]> getPersonInfo(
    @Param("name") String name, 
    @Param("date") Date date); 
+0

Я сделал опечатку ошибки - getPersonInfo принимает 2 аргумента: типа String и Date of course. Я только что отредактировал, чтобы исправить это. –

+0

спасибо, что он сработал – stackUser2000

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