jpa @Query Caused by: java.lang.NullPointerException

记录一下今天发生的JPA惨案

1、jpa org.hibernate.lazyinitializationexception could not initialize proxy - no session

       这是因为Hibernate3开始,hibernate默认开启了懒加载,proxy=true, 简单来说就是在进行数据库访问之时,当前针对数据库          的访问与操作session已经关闭且释放了,故提示no Session可用。

        解决办法,在duiy对应实体类加上 '@Proxy(lazy=false)' 注解即可,

        例如:User user  = (User)repository.getOne( 1 );    那就在  User 类上加上 @Proxy(lazy=false)

2、jpa @Query Caused by: java.lang.NullPointerException

        这个也坑,我就说怎么人家的@Query("update ShopCoupon sc set sc.deleted = true where sc.id in :ids")可以,我的                         @Query("update ShopCoupon set sc.deleted = true where ShopCoupon.id in :ids")就老是报错呢?

        原来是因为我没有用重命名,不重命名无法使用。

        解决办法:在ShopCoupon 后加上 se 重命名即可,修改后为@Query("update ShopCoupon sc set  sc.deleted  = true                         where sc.id in :ids")   注意红色字段!!

3、jpa java.lang.IllegalStateException: For queries with named parameters you need to use provide names

      这个最坑,报错:java.lang.IllegalStateException: For queries with named parameters you need to use provide names for                 method       parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.

      主要是说@Param注解是java8的¥*&!……@#*:">""。于是看了一下是不是Jar包导错了。

      结果还他吗真是。

      解决办法:讲@Param的注解换成 org.springframework.data.repository.query.Param 包下的。

      

      这个才是对的,之前由于IDEA猛按alt+enter太爽一时刹不住车就默认选了第一个。
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值