今天遇到一个郁闷的事,当我调用JPA entityManager.remove(entity);用来删除一个购物车项的数据时,
发现SQL语句代码并没有执行,而remove其他实体类的时候却能成功。
我仔细观察了,终于发现原因。
这归根结底还是JPA entity生命周期的状态导致的,简称实体状态。
由于我的购物车对象关系 Cart ,CartItem为一对多的关系,我在删除CartItem时,Cart已经查询出来(未查询不在此列),当
我删除CartItem时,JPA将CartItem设置为删除状态,但是Cart也持有CartItem,并且Cart里的CartItem为持久状态,所以导致CartItem不能删除掉。
解决的办法就是:
将Cart里的CartItem也设置为删除状态。
//删除生成订单的购物车项 for (CartItem item : cart.getCartItems()) { cartAll.getCartItems().remove(item); cartItemDao.remove(item); } cartDao.merge(cartAll);
此结论为个人看法,如果有不同看法可以回复,欢迎纠正。
相关推荐
springboot jpa 自动生成实体类的 文件 可以拿走直接用 Generate POJOs.groovy
Myeclipse通过jpa方式把数据库表自动生成注解类型的实体类,有详细的图形介绍过程,很详细。
生成JPA的实体,带annotation,包括@Entity,@Table(name=xx),@Id,@GeneratedValue,@Column(name=xx) 输出表和字段的comment,包含字段的类型长度 自动生成包名
主要介绍了idea hibernate jpa 生成实体类的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
根据Excel模板生成Java JPA实体,使用POI读取Excel【支持2003(xls)、2007(xlsx)】。
Eclipse下配置JPA生成数据库表对应的已注解实体类(图文详解),自己亲自配置成功后截图讲解,通过数据库中的表直接生成已经注解好的实体类,很神奇...
JPA视频教程_使用jpa映射单个实体对象
这个主要是和我发的博客的实例,但是博客的时候不知道怎么上传源码,只能单独保存了
使用 OpenJPA 代码增强实体类的 gradle-plugin 用法 buildscript { repositories { mavenCentral() } dependencies { classpath 'at.schmutterer.oss.gradle:gradle-openjpa:0.2.0' } } apply plugin: 'open...
JPA实体映射对时间字段的处理,使用的JPA比较流行
idea配置数据库,反向生成实体类demo,支持lombok,swagger2注解
JPA教程JPA教程JPA教程JPA教程JPA教程
JPA加载_更新_删除对象及使用JPQL语句进行查询
jpa jpa规范 jpa源码 jpa jpa规范 jpa源码
SpringData框架中使用的JPA工具类.模板代码,解决实体管理器工厂的浪费资源和耗时问题.第一次访问getEntityManager方法:经过静态代码块创建一个factory对象,再调用方法创建一个EntityManager对象,第二次方法...
13_传智播客JPA详解_JPA中的多对多双向关联实体定义与注解设置.rar
在JPA 之前,Java EE 应用程序将持续类表示为容器管理的实体bean 。使用JPA,您可以将 任何普通的旧式Java 对象(POJO) 类指定为JPA 实体:一个应使用JPA 持续性提供程序的 服务将其非临时字段持久保存到关系数据库...
产生原因:因为使用 jpa 自动创建表的时候,采用的是TreeMap的,我们要变成LinkedHashMap 的结构。 解决方案:在项目下java文件夹下创建包名为: org.hibernate.cfg ,创建类: PropertyContainer [包名,类名...
本资源详细描述了Eclipse中反向生成hibernate实体类+jpa注释的详细过程,是一个不错的图文教程。
JPA