Java JPA";org.apache.openjpa.persistence.ArgumentException“;删除时

Java JPA";org.apache.openjpa.persistence.ArgumentException“;删除时,java,hibernate,jpa,many-to-many,entity,Java,Hibernate,Jpa,Many To Many,Entity,我有一个实体对象,如下所示,当我尝试删除父实体对象时,我得到了“org.apache.openjpa.persistence.ArgumentException”,但我不确定这个异常的原因是什么 Class Parent implements Serializable { @ID @column(name="ParentKey") String parentKey; @manytomany @jointabel(name="Association_Parent_Child",joinColum

我有一个实体对象,如下所示,当我尝试删除父实体对象时,我得到了“org.apache.openjpa.persistence.ArgumentException”,但我不确定这个异常的原因是什么

Class Parent implements Serializable
{
@ID
@column(name="ParentKey")
String parentKey;

@manytomany
@jointabel(name="Association_Parent_Child",joinColumns{ @joinColumn,@inversejoinColumn})
List<Child> Childs;

}

Below is the Child Entity

Class Child implements Serializabe
{
 @ID
 @column(name="childKey")
 String childKey;

 @ManyToMany(mappedBy = "Childs", fetch = FetchType.EAGER)  
 List<Parent> parents;

@onetomany
List<someOtherClassX> x;

@onetomany
List<SomeotherClassY> y;
}
当我调用entitymanager.remove(“DeletParent”)

org.apache.openjpa.persistence.ArgumentException:
此配置不允许运行时优化,但列出了以下类型
在生成时或类加载时未使用javaagent增强:
com.ibm.sales.cgsp.busobj.Parent
com.ibm.sales.cgsp.busobj.Child”。
位于org.apache.openjpa.enhance.managedclasssublasser.prepareUnenhancedClasses(managedclasssublasser.java:116)
位于org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:304)
位于org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228)
位于org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:202)
位于org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
位于org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:213)
位于com.ibm.ws.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:42)
位于com.ibm.ws.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:27)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)中
位于java.lang.reflect.Method.invoke(Method.java:611)
位于org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.InvokeProxy方法(AbstractEntityManagerFactoryBean.java:376)
位于org.springframework.orm.jpa.AbstractEntityManagerFactoryBean$ManagedEntityManagerFactoryInvocationHandler.invoke(AbstractEntityManagerFactoryBean.java:519)
位于$Proxy15.createEntityManager(未知来源)
位于org.springframework.orm.jpa.SharedEntityManagerCreator$SharedentityManagerInvoke.invoke(SharedEntityManagerCreator.java:233)
位于$Proxy20.contains(未知来源)
在com.ibm.sales.cgsp.dao.impl.ClientStrategicGoalDAOImpl.deleteClientStrategyByGoal上(ClientStrategicGoalDAOImpl.java:76)
位于com.ibm.sales.cgsp.dao.test.ClientStrategicGoalDAOTest.testDeleteClientStrategicGoal(ClientStrategicGoalDAOTest.java:83)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)中
位于java.lang.reflect.Method.invoke(Method.java:611)
位于org.junit.runners.model.FrameworkMethod$1.runReflectVeCall(FrameworkMethod.java:44)
位于org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
位于org.junit.runners.model.FrameworkMethod.invokeeexplosive(FrameworkMethod.java:41)
位于org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
位于org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
位于org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
位于org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
位于org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
位于org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
位于org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
位于org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
位于org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
访问org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
位于org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
位于org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
位于org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
位于org.junit.runners.ParentRunner.run(ParentRunner.java:236)
位于org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
位于org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
位于org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

任何建议,根据例外情况,我们应该填充子对象。为什么必须在此处填充子对象?

在父对象中尝试此操作:

@ManyToMany(cascade = CascadeType.DETACH)

看起来有多个子项指向父项,当您有引用时无法删除。删除父项时是否要删除子项?还是要将父引用设为空?@Gayathri感谢您的回复。我不想在删除父项时删除子项。我的想法是,它的多个关系子项可能映射到其他一些记录,当您删除父项时,它应该从关联表parent\u child中删除,然后从父表中删除。如果我错了,请纠正我。在这种情况下,首先需要获取所有子项,然后与其他父项关联并删除父项。IMO:当错误涉及到增强问题时,它与映射问题完全无关,而是与实体的丰富程度有关(在运行时使用例如Javassist代理或
  <openjpa-2.0.0-r422266:935683 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: 
This configuration disallows runtime optimization, but the following listed types 
were not enhanced at build time or at class load time with a javaagent: "
com.ibm.sales.cgsp.busobj.Parent
com.ibm.sales.cgsp.busobj.Child".
at org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenhancedClasses(ManagedClassSubclasser.java:116)
at org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:304)
at org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228)
at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:202)
at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:213)
at com.ibm.ws.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:42)
at com.ibm.ws.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.invokeProxyMethod(AbstractEntityManagerFactoryBean.java:376)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean$ManagedEntityManagerFactoryInvocationHandler.invoke(AbstractEntityManagerFactoryBean.java:519)
at $Proxy15.createEntityManager(Unknown Source)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:233)
at $Proxy20.contains(Unknown Source)
at com.ibm.sales.cgsp.dao.impl.ClientStrategicGoalDAOImpl.deleteClientStrategyByGoal(ClientStrategicGoalDAOImpl.java:76)
at com.ibm.sales.cgsp.dao.test.ClientStrategicGoalDAOTest.testDeleteClientStrategicGoal(ClientStrategicGoalDAOTest.java:83)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
@ManyToMany(cascade = CascadeType.DETACH)