我正在使用,MySQL。我有以下的实体
User {
BigDecimal userNo;
String name;
}Mysql表看起来
user(userNo decimal(10, 0), name text);我想搜索所有的users,它的userNo 以开头,例如12,我如何在春季数据jpa中这样做。
我试着用,
userDao.findByUserNoStartingWith(BigDecimal userNo);但它不起作用并引发异常。
org.springframework.dao.InvalidDataAccessApiUsageException:参数值12%与预期类型java.math.BigDecimal (n/a)不匹配;嵌套异常为java.lang.IllegalArgumentException:参数值12%与预期类型java.math.BigDecimal (n/a)不匹配
如何使用派生查询或jpa查询进行搜索?
发布于 2015-08-06 11:17:54
我认为你最好的选择是写一个查询
select *
from user
where cast(userNo as char) like 12%因为Spring数据本身不能生成这样的查询,所以您必须自己指定它。因为cast不是JPQL,所以您还必须告诉Spring它是一个原生SQL查询。
public interface UserDao extends JpaRepository<User, BigDecimal> {
@Query(value = "select u from user u where cast(userNo as char) like :userNo%",
native = true)
public List<User> find(@Param("userNo") String userNo);
}https://stackoverflow.com/questions/31853988
复制相似问题