当sql文件中,存在nativeQuery = true时,是可以执行原生sql语句。
所谓原生sql,也就是说这段sql拷贝到数据库中,然后把参数值给一下就能运行了,比如:
@Query(value = "SELECT * FROM camera_info where delete_flag='0' and region_code=?1", nativeQuery = true)
List<Camera> findByRegionCode(String regionCode);
数据库运行情况:
如果不写nativeQuery = true时,就不是原生sql,而其中的select * from xxx中xxx也不是数据库对应的真正的表名,而是对应的实体名,并且sql中的字段名也不是数据库中真正的字段名,而是实体的字段名。例如:
***不是原生sql,所使用的是实体的字段名*****
@Query("SELECT c FROM Camera c where c.deleteFlag='0' and c.regionCode=?1")
List<Camera> findByRegionCode(String regionCode);
这两个的作用是一样的,只是写法不同而已。