在用jpa nativequery语句中,用spring junit测试发现报错:JPA-style positional param was not an integral ordinal; nested exception is java.lang.IllegalArgumen
多是sql之间的空格问题,或者sql拼接问题,还有可能是sql语句后面不能有分号。
@Query(value = "SELECT CONCAT_WS('|',t.order_id,t.chan_id,t.product_id,t.chan_user_id,t.order_type,t.outer_order_id,t.amount,DATE_FORMAT(t.create_at,'%Y-%m-%d %H:%i:%s')) FROM order_t t JOIN verification_order v ON t.`chan_id` = ?1 AND t.`outer_order_id` = v.`order_id` WHERE CONCAT_WS('|',t.chan_id,t.chan_user_id,t.product_id,t.order_type,t.amount,DATE_FORMAT( t.create_at,'%Y-%m-%d %H:%i:%s')) != CONCAT_WS('|',v.chan_id,v.chan_user_id,v.product_id,v.order_type,v.amount,DATE_FORMAT( v.create_at,'%Y-%m-%d %H:%i:%s')) AND t.create_at >= ?2 AND t.create_at < ?3",nativeQuery = true)
//@Query(value = "SELECT t.order_id,t.chan_id,t.chan_user_id,t.product_id,t.outer_order_id,t.amount,DATE_FORMAT(t.create_at,'%Y-%m-%d %H:%i:%s') FROM order_t t JOIN verification_order v on t.chan_id = ?1 AND t.outer_order_id = v.order_id WHERE CONCAT_WS('|', t.chan_id,t.chan_user_id,t.product_id,t.order_type,t.amount,DATE_FORMAT(t.create_at,'%Y-%m-%d %H:%i:%s')) != CONCAT_WS('|', v.chan_id,v.chan_user_id,v.product_id,v.order_type,v.amount,DATE_FORMAT(v.create_at,'%Y-%m-%d %H:%i:%s')) AND create_at >= ?2 AND create_at <= ?3;\n",nativeQuery = true)
List<String> queryDifferentOrders(String chanId, Date start,Date end);
如果从数据库的一张表查询多个字段的数据,需要用‘|’来分隔,CONCAT_WS(’|’, , )方便后续分隔,并把数据导入数据库的另一张表
还有导入字段要和数据库字段匹配(包括字段个数和字段类型完全一样)