spring-data-jpa使用解析方法名的方式基本可以实现所有查询,
但是,有时候需要自定义sql语句实现查询,总结如下
我第一次测试是通过用户名查询用户
@Query("select e from emp e where e.ename =?1")
List<Emp> findByEname(String name);
然后Tomcat一启动就报错
Validation failed for query for method public abstract java.util.List com.java.dao.EmpDao.findByEname(java.lang.String)!
因此查询了很多博客,发现,sql语句有问题,在习惯中写sql 就是这样写的。
但是,这里写的不是sql ,而是hql
sql是关系数据库查询语言,面对的数据库;
而hql是Hibernate这样的数据库持久化框架提供的内置查询语言,
虽然他们的目的都是为了从数据库查询需要的数据,
因此,
@Query("select e from Emp e where e.ename =?1")
List<Emp> findByEname(String name);
每错,from后面是我写的实体对象名,而不是数据库表名