org.apache.openjpa.util.GeneralException: null at
org.apache.openjpa.kernel.BrokerImpl.embed(BrokerImpl.java:2645)
------------------------------------------------------------------------------------------------------------------
Key: OPENJPA-451
URL: https://issues.apache.org/jira/browse/OPENJPA-451
Project: OpenJPA
Issue Type: Test
Affects Versions: 1.0.0
Environment: Windows Vista, Intel Core 2 Duo, 1gb RAM
Reporter: Sebastian Souza
Priority: Minor
This is the case
Class Item {
private Collection<Attribute> attributes;
}
Class Attribute {
private Item item;
private Data data;
}
Class abstract Data {
public abstract Object getValue ();
public abstract void setValue (Object value);
}
Class DataString extends Data {
private String value;
public Object getValue () {return this.value;}
public void setValue (Object value) {this.value = (String)value;}
}
In my orm.xml i declare
<mapped-superclass class="Data">
<entity class="Item">
<attributes>
<one-to-many name="attributes" target-entity="Attribute" mapped-by="item">
<cascade>
<cascade-persist/>
</cascade>
</onte-to-many>
</attributes>
</entity>
<entitiy class="Attribute">
<attributes>
...
<embedded name="data">
</attributes>
</entity>
<embeddable class="DataString">
<attributes>
<basic name="value">
<column name ="data"/>
</basic>
</attributes>
</embeddable>
Data is persisted in Attribute table, so it has to be an embedded field
When i try to commit an Item in
getTransaction ().commit ();
239680 ITSM TRACE [main] openjpa.Runtime - An exception occurred while
ending the transaction. This exception will be re-thrown.
<openjpa-1.0.0-r420667:568756 nonfatal general error>
org.apache.openjpa.util.GeneralException: null
at org.apache.openjpa.kernel.BrokerImpl.embed(BrokerImpl.java:2645)
at
org.apache.openjpa.kernel.SingleFieldManager.embed(SingleFieldManager.java:847)
at
org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:588)
at
org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:562)
at
org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:478)
at
org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2775)
at org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:39)
at
org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:940)
at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1884)
at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1844)
at
org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1762)
at
org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1292)
at
org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:861)
at
org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:408)
at
itsm.framework.persistence.business.PersistentObjectBusiness.insert(PersistentObjectBusiness.java:38)
at
itsm.framework.persistence.mappers.PersistentObjectMapper.create(PersistentObjectMapper.java:38)
at
itsm.configuration.mappers.ConfigurationItemVersionMapper.create(ConfigurationItemVersionMapper.java:33)
at
itsm.configuration.business.ConfigurationItemVersionBusiness.create(ConfigurationItemVersionBusiness.java:52)
at
itsm.configuration.facade.ConfigurationManagementFacade.createVersion(ConfigurationManagementFacade.java:711)
at
itsm.configuration.test.TestConfigurationItemVersion.testCreateWithAttributesWithoutRelationships(TestConfigurationItemVersion.java:123)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.lang.NullPointerException
at org.apache.openjpa.kernel.BrokerImpl.embed(BrokerImpl.java:2623)
... 39 more
If i change my code to
Class Item {
private Collection<Attribute> attributes;
}
Class Attribute {
private Item item;
private DataString data; // Reference to a specialization class
}
Everything works fine!
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.