我正在使用Spring Data框架,我在我的存储库中查询如下:
@Query("SELECT c FROM Contract c "
+ " WHERE LOWER(c.name) LIKE LOWER(:searchTerm) "
+ " OR LOWER(c.legalName) LIKE LOWER(:searchTerm) "
+ " OR cast(c.startDate as string) LIKE LOWER(:searchTerm)"
)
public Page<Contract> findAllBySearchTerm(@Param("searchTerm") String searchTerm, Pageable page)
我可以按名称和legalName搜索合约,但我有问题通过 startDate 搜索合约,格式为“yyyy-MM-dd'T'HH:mm:ss “。 我试图将startDate强制转换为varchar,但函数 cast()对Oracle(这是我的数据库)无法正常工作。
我也试过这个,但也行不通:
+ " to_char(c.startDate, 'MM/dd/yyyy') LIKE LOWER(:searchTerm)"
我尝试将searchTerm强制转换为DateTime,并将其与startDate进行比较,但我无法使用函数 to_date()。
有没有人为这个问题找到解决方案?一些有用的链接可能吗?
答案 0 :(得分:0)
对于此查询
@Query("SELECT c FROM Contract c "
+ " WHERE LOWER(c.name) LIKE LOWER(:searchTerm) "
+ " OR LOWER(c.legalName) LIKE LOWER(:searchTerm) "
+ " OR cast(c.startDate as string) LIKE LOWER(:searchTerm)"
)
public Page<Contract> findAllBySearchTerm(@Param("searchTerm") String searchTerm, Pageable page)`
OR c.startDate = :searchTerm
,其中searchTerm是一个Date对象