springboot+spring data jpa SQL语句正确,但是执行sql语句返回结果为空

错误描述

在 respository中声明如下BoyRespository接口函数,执行不能够返回结果。

   @Query(value = "select distinct city from plot_spider where province='广东省'", nativeQuery = true)
    public List<Object> findDistinctCity(String province);

但是,同在BoyRespository接口中.

@Query(value = “select * from boy”,nativeQuery = true)
public List getAllBoy();

@Query("select b from Boy b where b.username = ?1")
public List<Object> get_by_username(String username);

Boy findByUsername(String username);


public List<Object> findAllByUsername(String username);

数据库application.yml原来的配置如下。然后我改成了自己本地的。

spring:
  profiles:
    active: prod
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
#    url: jdbc:mysql://192.168.97.215:3306/kdwcomp?useSSL=false
#    username: comp
#    password: comp123!@#
    url: jdbc:mysql://localhost:3306/kdwcomp?useSSL=false
    username: root
    password: 123456
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

问题推断

问题就是这么神奇。。以nativeQuery的方式进行带参数查询(可能别的非nativeQuery方式查询也是这样)就是为空。或者说,输入类似于province="广东省"这样的条件就会导致数据为空。而我在别的接口方法中测试,也有条件查询,但是条件查询一般是英文的,就是比如username=“zhangsan”,好像问题比较明了了。就是字符编码的问题!!

问题解决

然后就修改指定字符编码进行连接数据库。

    url: jdbc:mysql://localhost:3306/kdwcomp?useUnicode=true&characterEncoding=utf-8&useSSL=false

问题得以解决。。

另外 说明一下,项目本来的远程数据库是5.7的,而我本地的是5.6的,用5.7的没有这种问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值