使用Spring Data JPA Stream流式查询时出现字符编码错误
Spring Data JPA 流式全量查询字符编码失效问题
代码实现
Repository层接口定义
@QueryHints(value = { @QueryHint(name = HINT_FETCH_SIZE, value = "" + Integer.MIN_VALUE), @QueryHint(name = HINT_CACHEABLE, value = "false"), @QueryHint(name = HINT_READONLY, value = "true"), }) Stream<Book> findAllBy();
Service层业务调用逻辑
try (var allBooks = bookRepository.findAllBy()) { allBooks.forEach(book -> { logger.info("Coming book name={}", book.getName()); // 手动detach实体释放内存 entityManager.detach(book); }); }
问题现象
- 执行流式查询获取全量数据时,书名字段出现乱码,典型乱码格式为
????、en ???? ??、????? ????? ?? - 已参照现有公开方案,在数据库连接URL中配置编码参数适配,问题仍未解决
最终解决方式
- 设置JVM环境变量
-Dfile.encoding=utf8,配置完成后乱码问题彻底解决
内容的提问来源于stack exchange,提问作者Sha
相关产品推荐
相关产品推荐

