一、报错
oracle.jdbc.OracleDatabaseException: ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 BINARY
二、原因
Jpa Dao接口:
@Query(value = "select vc.* from vehicle_record vc inner join black_car_management bc on vc.plate_no = bc.plate_num" +
" where (bc.community_id = ?1 or bc.community_id is null) and (vc.cross_time >= ?2 and vc.cross_time <= ?3)", nativeQuery = true)
List<VehicleRecord> getPassageBlackCar(Long communityId, Timestamp firstDay, Timestamp curDay);
在上面我用了Long communityId作为参数,当我传入communityId为null时就会报上面的错误,原因是在执行Sql的时候对象类的数据都转成了二进制类型
三、解决
把Dao中的Long类型参数改成long基本类型
@Query(value = "select vc.* from vehicle_record vc inner join black_car_management bc on vc.plate_no = bc.plate_num" +
" where (bc.community_id = ?1 or ?1 = -1) and (vc.cross_time >= ?2 and vc.cross_time <= ?3)", nativeQuery = true)
List<VehicleRecord> getPassageBlackCar(long communityId, Timestamp firstDay, Timestamp curDay);
调用之前把Long也做一个转换