Hibernate异常之cascade

Posted 李昭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate异常之cascade相关的知识,希望对你有一定的参考价值。

  1 org.hibernate.MappingException: Unsupported cascade style: delete-option
  2     at org.hibernate.engine.spi.CascadeStyles.getCascadeStyle(CascadeStyles.java:257)
  3     at org.hibernate.mapping.Property.getCascadeStyle(Property.java:140)
  4     at org.hibernate.mapping.Property.getCollectionCascadeStyle(Property.java:127)
  5     at org.hibernate.mapping.Property.getCascadeStyle(Property.java:102)
  6     at org.hibernate.tuple.PropertyFactory.buildEntityBasedAttribute(PropertyFactory.java:229)
  7     at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:202)
  8     at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:519)
  9     at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:124)
 10     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 11     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 12     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 13     at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
 14     at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96)
 15     at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77)
 16     at org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:128)
 17     at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:300)
 18     at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:460)
 19     at org.hibernate.boot.internal.MetadataImpl.buildSessionFactory(MetadataImpl.java:170)
 20     at pw.fengya.strategy.TestHibernate.init(TestHibernate.java:26)
 21     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 22     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 23     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 24     at java.lang.reflect.Method.invoke(Method.java:483)
 25     at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:389)
 26     at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
 27     at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.invokeMethodInExtensionContext(ClassTestDescriptor.java:289)
 28     at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$11(ClassTestDescriptor.java:277)
 29     at org.junit.jupiter.engine.descriptor.ClassTestDescriptor$$Lambda$153/1157740463.invokeBeforeEachMethod(Unknown Source)
 30     at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$null$2(TestMethodTestDescriptor.java:132)
 31     at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$171/597255128.execute(Unknown Source)
 32     at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
 33     at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:152)
 34     at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:131)
 35     at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:106)
 36     at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:57)
 37     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:83)
 38     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$$Lambda$133/1144648478.execute(Unknown Source)
 39     at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
 40     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
 41     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$null$2(HierarchicalTestExecutor.java:92)
 42     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$$Lambda$136/1681595665.accept(Unknown Source)
 43     at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
 44     at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
 45     at java.util.Iterator.forEachRemaining(Iterator.java:116)
 46     at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
 47     at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
 48     at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
 49     at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
 50     at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
 51     at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
 52     at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
 53     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:92)
 54     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$$Lambda$133/1144648478.execute(Unknown Source)
 55     at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
 56     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
 57     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$null$2(HierarchicalTestExecutor.java:92)
 58     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$$Lambda$136/1681595665.accept(Unknown Source)
 59     at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
 60     at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
 61     at java.util.Iterator.forEachRemaining(Iterator.java:116)
 62     at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
 63     at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
 64     at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
 65     at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
 66     at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
 67     at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
 68     at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
 69     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:92)
 70     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$$Lambda$133/1144648478.execute(Unknown Source)
 71     at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
 72     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
 73     at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:51)
 74     at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
 75     at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
 76     at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
 77     at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
 78     at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:86)
 79     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
 80     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
 81     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
 82     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
 83     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
 84     Suppressed: java.lang.NullPointerException
 85         at pw.fengya.strategy.TestHibernate.destory(TestHibernate.java:39)
 86         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 87         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 88         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 89         at java.lang.reflect.Method.invoke(Method.java:483)
 90         at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:389)
 91         at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
 92         at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.invokeMethodInExtensionContext(ClassTestDescriptor.java:289)
 93         at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$synthesizeAfterEachMethodAdapter$12(ClassTestDescriptor.java:281)
 94         at org.junit.jupiter.engine.descriptor.ClassTestDescriptor$$Lambda$156/1582797472.invokeAfterEachMethod(Unknown Source)
 95         at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$null$9(TestMethodTestDescriptor.java:208)
 96         at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$195/1112758237.execute(Unknown Source)
 97         at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
 98         at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeAllAfterMethodsOrCallbacks$13(TestMethodTestDescriptor.java:226)
 99         at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$194/2108440536.accept(Unknown Source)
100         at java.util.ArrayList.forEach(ArrayList.java:1234)
101         at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeAllAfterMethodsOrCallbacks(TestMethodTestDescriptor.java:224)
102         at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeAfterEachMethods(TestMethodTestDescriptor.java:207)
103         at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:114)
104         ... 48 more

Hibernate创建双向一对多关联关系时报错,报错信息:org.hibernate.MappingException: Unsupported cascade style: delete-option,原因是在这个配置文件是从上一个项目中直接复制的,配置文件中没有去掉cascade="delete-option",去掉后正常运行

<set name="orders" table="ORDERS" inverse="true" cascade="delete-option">
            <key column="CUSTOMER_ID" />
            <one-to-many class="Order" />
</set>

 

以上是关于Hibernate异常之cascade的主要内容,如果未能解决你的问题,请参考以下文章

解决Hibernate删除异常:deleted object would be re-saved by cascade

hibernate 之 cascade 和 inverse

Hibernate 配置文件属性之 级联操作cascade 性能优化inverse

hibernate, cascade

hibernate基础17:cascade 级联 与 Inverse 反转

hibernate基础17:cascade 级联 与 Inverse 反转