您现在的位置是:首页 >其他 >记一处BUG网站首页其他
记一处BUG
简介记一处BUG
在编辑信息时出现如下异常信息:
java.lang.UnsupportedOperationException: null
at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142) ~[na:na]
at java.base/java.util.ImmutableCollections$AbstractImmutableCollection.clear(ImmutableCollections.java:149) ~[na:na]
at org.hibernate.collection.spi.PersistentBag.clear(PersistentBag.java:471) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at org.hibernate.type.CollectionType.replaceElements(CollectionType.java:496) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at org.hibernate.type.CollectionType.replace(CollectionType.java:676) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at org.hibernate.type.TypeHelper.replace(TypeHelper.java:117) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at org.hibernate.event.internal.DefaultMergeEventListener.copyValues(DefaultMergeEventListener.java:581) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at org.hibernate.event.internal.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:280) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at org.hibernate.event.internal.DefaultMergeEventListener.merge(DefaultMergeEventListener.java:216) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at org.hibernate.event.internal.DefaultMergeEventListener.doMerge(DefaultMergeEventListener.java:148) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:132) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:86) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:850) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:836) ~[hibernate-core-6.5.3.Final.jar:6.5.3.Final]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:364) ~[spring-orm-6.1.16.jar:6.1.16]
at jdk.proxy2/jdk.proxy2.$Proxy258.merge(Unknown Source) ~[na:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:319) ~[spring-orm-6.1.16.jar:6.1.16]
at jdk.proxy2/jdk.proxy2.$Proxy258.merge(Unknown Source) ~[na:na]
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:635) ~[spring-data-jpa-3.3.7.jar:3.3.7]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) ~[spring-aop-6.1.16.jar:6.1.16]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:277) ~[spring-data-commons-3.3.7.jar:3.3.7]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:170) ~[spring-data-commons-3.3.7.jar:3.3.7]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158) ~[spring-data-commons-3.3.7.jar:3.3.7]
at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:516) ~[spring-data-commons-3.3.7.jar:3.3.7]
at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:285) ~[spring-data-commons-3.3.7.jar:3.3.7]
at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:628) ~[spring-data-commons-3.3.7.jar:3.3.7]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.16.jar:6.1.16]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:173) ~[spring-data-commons-3.3.7.jar:3.3.7]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:148) ~[spring-data-commons-3.3.7.jar:3.3.7]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.16.jar:6.1.16]
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:70) ~[spring-data-commons-3.3.7.jar:3.3.7]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.16.jar:6.1.16]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:379) ~[spring-tx-6.1.16.jar:6.1.16]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-6.1.16.jar:6.1.16]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.16.jar:6.1.16]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:138) ~[spring-tx-6.1.16.jar:6.1.16]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.16.jar:6.1.16]
at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:57) ~[spring-data-commons-3.3.7.jar:3.3.7]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.16.jar:6.1.16]
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:165) ~[spring-data-jpa-3.3.7.jar:3.3.7]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.16.jar:6.1.16]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-6.1.16.jar:6.1.16]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.16.jar:6.1.16]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223) ~[spring-aop-6.1.16.jar:6.1.16]
at jdk.proxy2/jdk.proxy2.$Proxy317.save(Unknown Source) ~[na:na]
at com.ilogistics.maintenance.manager.transport.order.ShippingWorkOrderManager.doFlush(ShippingWorkOrderManager.java:254) ~[classes/:na]
at com.ilogistics.maintenance.manager.transport.order.ShippingWorkOrderManager.doFlush(ShippingWorkOrderManager.java:34) ~[classes/:na]
出现异常信息时,乍一看有点摸不着头脑,但是仔细看堆栈信息不难发现java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)这个信息。
java.util.ImmutableCollections.uoe(ImmutableCollections.java:142),这表明你正在尝试对一个不可变的集合执行不支持的操作。
一看到这个其实我已经知道是哪里出问题了。
这是我的PO类:
@ElementCollection
@CollectionTable(name = LogisticsMaintenanceDefs.TABLE_PREFIX + "shipping_work_order_recipient_departs",
joinColumns = @JoinColumn(name = "shipping_work_order_id", referencedColumnName = "id"))
private List<RecipientDepart> recipientDeparts;
@Getter
@Setter
@Embeddable
@Comment("接收科室ids(当前科室以及子集)")
public static class RecipientDepart implements Serializable {
@Serial
private static final long serialVersionUID = 4888206176466396699L;
@Comment("部门id")
@Column(name = "depart_id")
private String departId;
}
出问题的代码
//区分一下是送到部门,还是送给人
shippingWorkOrderPO.setRecipientDeparts(dto.getRecipientDeparts().stream().map(depart->{
ShippingWorkOrderPO.RecipientDepart recipientDepart = new ShippingWorkOrderPO.RecipientDepart();
recipientDepart.setDepartId(depart);
return recipientDepart;
}).toList());
stream().toList() 返回的是一个不可变的集合,需要修改为可变集合
改为:
shippingWorkOrderPO.setRecipientDeparts(dto.getRecipientDeparts().stream().map(depart->{
ShippingWorkOrderPO.RecipientDepart recipientDepart = new ShippingWorkOrderPO.RecipientDepart();
recipientDepart.setDepartId(depart);
return recipientDepart;
}).collect(Collectors.toList()));
注:在使用@CollectionTable 一定要注意,传入的集合一定要是可变集合
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
U8W/U8W-Mini使用与常见问题解决
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结