Hi Andrea,
By applying your fix tests wont pass. Can you check it by running:

ant clean test

Lvc@



On 3 March 2014 13:39, Andrea Zoleo <[email protected]> wrote:

> Hi,
>
>
> I have the following entities to be persisted via object database.
>
>
>
> <https://lh3.googleusercontent.com/-sSaAi3PmF7w/UxRf70w_iAI/AAAAAAAAAEo/HF-RBMHTso0/s1600/uml.tiff>
>
>
> when i call
>
>
> OObjectDatabaseTx.setAutomaticSchemaGeneration(true);
>
> odb.getEntityManager().registerEntityClasses(classNames);
>
> orient throws the following exception
>
>
> com.orientechnologies.orient.core.exception.OSchemaException: Class
> Component already has property 'inputs'
>
>
> After some source code inspection I found the problem probably is at the
> lines 552-555 of the OObjectEntitySerializer class:
>
>
> if (automaticSchemaGeneration &&
>
>     !currentClass.equals(Object.class) &&
>
>     !currentClass.equals(ODocument.class)) {
>
>
>
>    ((OSchemaProxyObject)ODatabaseRecordThreadLocal.INSTANCE.get()
>
>    .getDatabaseOwner().getMetadata().getSchema())
>
>    .generateSchema(currentClass,
> ODatabaseRecordThreadLocal.INSTANCE.get());
>
> }
>
> where the serializer does not check for already serialized classes during
> transitive serialization.
> I applied this workaround to the source code:
>
> if (automaticSchemaGeneration &&
>
>     !currentClass.equals(Object.class) &&
>
>     !currentClass.equals(ODocument.class) &&
>
>
> !ODatabaseRecordThreadLocal.INSTANCE.get().getDatabaseOwner().getMetadata()
>
>       .getSchema().existsClass(currentClass.getSimpleName())) {
>
>
>
>    ((OSchemaProxyObject)ODatabaseRecordThreadLocal.INSTANCE.get()
>
>    .getDatabaseOwner().getMetadata().getSchema())
>
>    .generateSchema(currentClass,
> ODatabaseRecordThreadLocal.INSTANCE.get());
>
> }
>
> now all seems work fine. The source version is the 1.7-rc2-SNAPSHOT but
> the same problem there is in the 2.0-SNAPSHOT too.
>
> Is it a bug or there is some thing I don't do before calling the lines:
> OObjectDatabaseTx.setAutomaticSchemaGeneration(true);
>
> odb.getEntityManager().registerEntityClasses(classNames);
> ?
>
> Some help will be appreciated.
>
>
>
>  --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "OrientDB" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to