入坑记(1)【jpa级联更新】
2018-07-11 03:31:27来源:博客园 阅读 ()
好久没有写博客了,近期将写一些关于程序入坑、spring boot、dubbo等方面的文章,欢迎大家关注。
现在有一个这样需求,就是前端页面表单选择用户名,将用户id存入当前表单,用户表不做任何改变,也就是当更新主表时,子表不更新,仅把子表的id存入父表中。
当我们做级联查询时,通过OneToOne和OnoToMany等注解可以解决查询映射到对象问题,并能顺利顺利查询到数据,但我们做更新时可能会遇到报500的错误,开始百思不得其解。我们来看看以下的报错信息:
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: com.xxx.domain.p.User; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: com.xxx.domain.p.User
如图:
原代码:
@ApiModelProperty(value = "用户id",example = "-")
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id",referencedColumnName = "id",columnDefinition = "varchar(64) DEFAULT NULL COMMENT '线索ID'")
private User user;
经过百度和谷歌,搜索上说是因为我更新了或插入了关联表数据的原因.
网上的解决方案:
- CascadeType.ALL改为CascadeType. MERGE或CascadeType.REFRESH。
- 去掉id生成策略,或者不传id。
至于第2条,将业务需要我们是不能做的,因为子表不做任何改变的,所以只能将第1条改联系关系的方法,我将级关系改为CascadeType. MERGE。
但实际并没有什么卵用,依然报错,不过是新的错误:
:
按错误意思是不能更新和新建子表。
后来无数个百度和谷歌,都没有找到答案。
只有自己尝试动手想办法,慢慢调。
首先想到的是OneToOne注解,一看这个注解的属性都没有与表操作的属性。
后来在JoinColumn看到的与表操作的属性:insertable 和updatable。我分别 设置insertable = false,updatable = true,问题就解决了。
最终代码:
@ApiModelProperty(value = "用户id",example = "-")
@OneToOne(cascade = CascadeType.
MERGE)
@JoinColumn(name = "user_id",referencedColumnName = "id",columnDefinition = "varchar(64) DEFAULT NULL COMMENT '线索ID'",insertable = false,updatable = true)
private User user;
午间匆匆发布,若有渗漏,请帮忙在评论区斧正,谢谢。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:String
- 【java框架】JPA(4) -- JPA二级缓存与JPQL 2020-05-24
- 从无到有Springboot整合Spring-data-jpa实现简单应用 2020-05-22
- Thymeleaf+SpringBoot+SpringDataJPA实现的中小医院信息管理 2020-04-18
- 【Spring Data 系列学习】Spring Data JPA @Query 注解查询 2020-03-15
- 【java框架】JPA(1) -- JPA入门 2020-03-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash