2019-03-01 16: 38: 44.930 WARN 55052 --- [nio-8080-exec-1] ohengine.jdbc.spi.SqlExceptionHelper: Ошибка SQL: 932, SQLState: 42000
2019-03-01 16: 38: 44.930 ОШИБКА 55052 --- [nio-8080-exec-1] ohengine.jdbc.spi.SqlExceptionHelper: ORA-00932: несовместимые типы данных: ожидается, ДАТА получила НОМЕР
2019-03-01 16: 38: 44.946 ОШИБКА 55052 --- [nio-8080-exec-1] oaccC [. [. [/]. [DispatcherServlet]: Servlet.service () для сервлета [dispatcherServlet] в контекстес путем [] выдало исключение [Ошибка обработки запроса;вложенным исключением является org.springframework.dao.InvalidDataAccessResourceUsageException: не удалось извлечь ResultSet;SQL [н / п];вложенное исключение: org.hibernate.exception.SQLGrammarException: не удалось извлечь ResultSet] с коренной причиной
oracle.jdbc.OracleDatabaseException: ORA-00932: противоречивые типы данных: ожидается, ДАТА получила НОМЕР
Запрос, который я хочу в конечном итоге, я думаю, просто неправильно сформирован с использованием Spring CrudRepository:
select * from user_usage where Prs_Id=1104438622 and createddate > sysdate -1;
desc user_usage
Name Null Type
------------- -------- --------------
USAGETYPEID NOT NULL NUMBER(3)
PRS_ID NOT NULL NUMBER(18)
CREATEDID NOT NULL NUMBER(10)
CREATEDDATE NOT NULL DATE
COMMENTS VARCHAR2(4000)
USERAGENTID NUMBER(10)
1) POJO
@Entity
@Table(name="USER_USAGE)
public class Usage {
@Column(name="Prs_Id")
@Id
private long prsId;
@Column(name="createddate")
private Date createddate;
2) Хранилище
public interface UsageRepository extends CrudRepository<Usage, Date>{
//select * from user_usage where Prs_Id=1104438622 and createddate > sysdate -1; --query that I want eventually
@Query("SELECT a FROM Usage a WHERE a.prsId=:prsId and a.createddate>=:createddate-1")
Usage fetchUsageGreaterThanEqual(@Param("prsId") Long prsId, @Param("createddate") Date createddate);
}
3) Контроллер:
@Autowired
UsageRepository usageRepository;
static Date myDate;
@GetMapping("/{prsId}")
public Usage getUsageByPrsId(@PathVariable Long prsId) {
return usageRepository.fetchUsageGreaterThanEqual(prsId, myDate);
}