PropertyUtils.copyProperties复制对象失败

在尝试使用PropertyUtils.copyProperties复制对象时遇到错误。该错误通常由于目标对象属性为基本类型且源对象对应属性为null,或BeanUtils深浅拷贝问题导致。通过检查日志,发现原因为懒加载导致的问题。解决方法是在配置文件中启用懒加载无事务选项,或在相关Service方法上添加@Transactional注解以启用事务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PropertyUtils.copyProperties复制对象失败

在跟着网上资源写个小项目时,运行测试类报这个错误,

org.springframework.beans.FatalBeanException: Could not copy property 'buyerAddress' from source to target; nested exception is    java.lang.reflect.InvocationTargetException

找了很多的回答,第一种就是说在使用BeanUtils.copyProperties(model,target)对属性进行拷贝时,如果javaBean中的属性有基本类型,而model模型中对应的属性值为 null 的话,就会出现这个异常。
参考于:https://blog.youkuaiyun.com/rchm8519/article/details/7101911

第二种是BeanUtils.copyProperties深浅拷贝问题,我这里对bean属性进行复制,不是复制数组和集合。
参考于:https://www.cnblogs.com/JoeyWong/p/11011360.html
然后再看了一遍报错日志发现了另一个问题

Caused by: org.hibernate.LazyInitializationException: could not initialize proxy [com.izgk.sell.dataobject.OrderMaster#1586938219267140779] - no Session

这是因为 getOne() 是 lazy load 的,而教程写的是findOne()。
所以我在配置文件application.yml中加上 spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true 就解决了。但是这个方法不是很推荐。
或者直接在对应的service方法加一个事务的注解@Transactional也可以
参考于: https://www.cnblogs.com/EasonJim/p/9773668.html

最后附上结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值