原生sql: 所谓原生sql,也就是说这段sql拷贝到数据库中,然后把参数值给一下就能运行了
有nativeQuery = true时,是可以执行原生sql语句
@Query(value = "select * from product_rel where audit_id=?1 and process_object=0 ",nativeQuery = true) List<ProductRel> findAllByProductAuditId(Integer id);
这个时候,把select * from product_rel where audit_id=?1 and process_object=0拷贝到数据库中,并给audit_id赋一个值,那么这段sql就可以运行。其中数据库表在数据库中的表名就是product_rel,字段audit_id在数据库中也是真实存在的字段名。
没有nativeQuery = true时,就不是原生sql
@Query("select ratio from MdmRatio where enabledNum=1 ") List<MdmUtilThreeProjection> findByMdmUtilThreeProjection();
select ratio from MdmRatio中的MdmRatio为实体名,不是真正的数据库表名,真正的数据库表名是mdm_ratio,而查询条件中的enabledNum在数据库中真正的名字是enabled_num。
这两个的作用是一样的,只是写法不同。
Springboot DATA JPA @nativeQuery = true解释(终于搞懂了版,坑了一天了)
最新推荐文章于 2023-06-29 10:41:31 发布