Cannot add base class 'Xyz', because of recursion - due to OEntityManagerClassHandler getName()

14 views
Skip to first unread message

arjun dhar

unread,
May 3, 2018, 10:27:44 AM5/3/18
to orient-...@googlegroups.com
Motive
Am using JPA/Object database and modeling entities such that they work with Hibernate (JPA2) as well as OrientDB.
On OrientDb - 3.0.0

Domain Model
The domain model is very simple:

com.neurosys.crm.pricing.domain.jpa.Feature -- <<extends>> --> com.neurosys.crm.pricing.domain.Feature

Error
On Registering  class : com.neurosys.crm.pricing.domain.jpa.Feature
I Get:

```
com.orientechnologies.orient.core.exception.OSchemaException: Cannot add base class 'Feature', because of recursion
DB name="stumps_crm_odb"
at com.orientechnologies.orient.core.metadata.schema.OClassImpl.checkRecursion(OClassImpl.java:1572)
at com.orientechnologies.orient.core.metadata.schema.OClassImpl.addBaseClass(OClassImpl.java:1516)
at com.orientechnologies.orient.core.metadata.schema.OClassEmbedded.setSuperClassesInternal(OClassEmbedded.java:425)
at com.orientechnologies.orient.core.metadata.schema.OClassEmbedded.setSuperClasses(OClassEmbedded.java:273)
at com.orientechnologies.orient.object.enhancement.OObjectEntitySerializer.registerClass(OObjectEntitySerializer.java:660)
at com.orientechnologies.orient.object.entity.OObjectEntityClassHandler.registerEntityClass(OObjectEntityClassHandler.java:51)
at com.orientechnologies.orient.object.entity.OObjectEntityClassHandler.registerEntityClass(OObjectEntityClassHandler.java:40)
at com.orientechnologies.orient.object.entity.OObjectEntityClassHandler.registerEntityClass(OObjectEntityClassHandler.java:34)
at com.orientechnologies.orient.core.entity.OEntityManager.registerEntityClasses(OEntityManager.java:232)
at com.neurosys.odb.object.RegisterClass.register(RegisterClass.java:45)
at com.neurosys.odb.object.etl.ODBPersistTransformer.setRegisterClasses(ODBPersistTransformer.java:101)
at com.neurosys.crm.domain.EntitiesTest.testPackageAndFeatures(EntitiesTest.java:70)
        ...
```

Cause / Effect / Suggestion
OEntityManagerClassHandler relies on Class.getSimpleName() ; not sure why it dares to make that assumption. However even so, can you suggest an elegant way to override this?
Reply all
Reply to author
Forward
0 new messages