map为空时调用keySet()传给jpa导致的bug

2020-09-29 02:00:23 845

userService.deleteNotInId(userMap.keySet());
@Modifying
@Query(value = "DELETE FROM user WHERE id NOT IN (:iqs)", nativeQuery = true)
void deleteNotInId(@Param("ids") Iterable<String> iqs);

当userMap size为0时

预期jpa sql为DELETE FROM user WHERE iq NOT IN ('')

而实际sql为 DELETE FROM user WHERE iq NOT IN (null)

SpringDataJPA + SQL Server 分页查询返回page0_字段

在配置了方言后, 使用 jpa 的分页查询(Pageable)时, sql返回的字段都变成了这样{ "page1_": "2020121800040029834", "page2_": 19.25, "page3_": null, "page0_": "2020-12
2020-12-18

SQL SERVER timestamp类型 不能使用java.sql.Timestamp类型对应

实际应该使用 CONVERT ( bigint, addTimestamp)进行转换, 然后用long接值
2020-11-25
JPA + SQL SERVER 列名无效

JPA + SQL SERVER 列名无效

用实体类接返回结果报列名无效.暂时只能用List<Map<String, Object>>
2020-11-25

JPA IN or NOT IN 查询时 只能传List

JPA IN 查询时 只能传List
2020-10-28

map为空时调用keySet()传给jpa导致的bug

userService.deleteNotInId(userMap.keySet()); @Modifying @Query(value = "DELETE FROM user WHERE id NOT IN (:iqs)", nativeQuery = true) void deleteNotIn
2020-09-29

jpa方法参数必须加上@Param

void deleteByKl(String kl);线上可能报错原因可能是编译时没有加-parameters这个参数, 编译后丢失了参数名称, 使得反射拿不到对应参数需要加上注解void deleteByKl(@Param("kl") String kl);同理public ResultVO de
2020-09-28
解决SpringBoot+JPA中使用set方法时自动更新数据库问题

解决SpringBoot+JPA中使用set方法时自动更新数据库问题

首先引入EntityManager:然后用它来强转获得HibernateEntityManager,然后调用获得Session,然后在set完之后用Session的.evict()方法清掉该对象缓存(并非所有对象缓存),如此就ok了...好吧,已经java11不建议用了,不过还能用,先用着吧!更新了
2020-04-04

关于redis缓存时间设置可能导致的bug

看到在项目代码中有人先调用redisTemplate的方法判断某个key是否存在,然后再调用redisTemplate的方法拿到这个key里的数据。但是,在设置了key缓存时间的情况下,这个逻辑就会出错。比如第一步这个key存在,但是紧接着key过期了,后面就会拿不到这个key,造成后面的逻辑出错所
2020-06-19

事务隔离级别引起的问题

最近碰到了一个事务隔离级别引起的bug在一段业务逻辑中,需要查询两次标志位,但两次查询到的都是同样的结果,一开始以为是hibernate缓存的原因然后一通操作,发现两次查询发了两次sql,于是排除hibernate最后怀疑是隔离级别的问题,在手动设置隔离级别为“读已提交”后,问题解决
2020-07-16

多数据源 单库操作事务不回滚

项目配置了多数据源,之前操作主数据源,直接加上@Transactional(rollbackFor = Exception.class),没有任何问题最近操作其他数据源并做测试的时候,发现int i = 1 / 0并不会回滚,各种排查,从数据库引擎到注解@Transactional使用规范和异常处理
2020-07-27

hutool-http链式调用参数丢失

版本hutool-http-5.2.5如下代码,pathParams的参数会丢失 HttpRequest request = cn.hutool.http.HttpUtil.createRequest(method, url).timeout(TIMEOUT) .
2020-08-26

jpa方法参数必须加上@Param

void deleteByKl(String kl);线上可能报错原因可能是编译时没有加-parameters这个参数, 编译后丢失了参数名称, 使得反射拿不到对应参数需要加上注解void deleteByKl(@Param("kl") String kl);同理public ResultVO de
2020-09-28

map为空时调用keySet()传给jpa导致的bug

userService.deleteNotInId(userMap.keySet()); @Modifying @Query(value = "DELETE FROM user WHERE id NOT IN (:iqs)", nativeQuery = true) void deleteNotIn
2020-09-29

JPA IN or NOT IN 查询时 只能传List

JPA IN 查询时 只能传List
2020-10-28

Spring Boot项目中使用RedisTemplate.delete() 删除指定key失败的解决办法

https://blog.csdn.net/hello_world_qwp/article/details/85763286上面这篇博客扯一大堆, 居然还分析源码实际只是自定义了key的序列化方式导致最终操作redis的时候序列化的key与预期的key不一致而已, 自然就删不掉redis中的数据了
2020-11-26

Dubbo连接不到对应服务

尝试删除C:\Users\用户\nacos该目录, 然后重启项目原因根据官方图,dubbo调用者需要通过注册中心(例如:ZK、nacos)注册信息, 获取提供者,但是如果频繁往ZK获取信息,肯定会存在单点故障问题, 所以dubbo提供了将提供者信息缓存在本地的方法。 Dubbo在订阅注册中心的回调
2021-01-29