i used latest svn trunk (1703)
for test purposes i modified the InheritanceTest's create() method and
ran InheritanceTest only:
@Test
public void create() {
database.open( "admin", "admin" );
OClass account = database.getMetadata().getSchema()
.createClass( "Account",
database.getStorage().addCluster( "account",
OStorage.CLUSTER_TYPE.PHYSICAL ) );
OClass c =
database.getMetadata().getSchema().createClass( "Company" ).setSuperClass( account );
c.createProperty( "ucpTuniqueId", OType.BINARY );
OClass profile = database.getMetadata().getSchema()
.createClass( "Profile",
database.getStorage().addCluster( "profile",
OStorage.CLUSTER_TYPE.PHYSICAL ) );
startRecordNumber = database.countClusterElements("Company");
Company company;
for (long i = startRecordNumber; i < startRecordNumber +
TOT_RECORDS; ++i) {
company = new Company( (int) i, "Microsoft" + i );
company.setEmployees( (int) (100000 + i) );
company.getAddresses().add( new Address( "Headquarter", redmond,
"WA 98073-9717" ) );
company.setUCPTuniqueId( new byte[] { 0x03, 0x00, 00, 0x1A, 0x7B,
0x62 } );
database.save( company );
}
database.close();
}
and received:
FAILED: create
java.lang.IllegalArgumentException: Type BINARY must be a collection
at
com.orientechnologies.orient.core.serialization.serializer.object.OObjectSerializerHelper.multiValueToStream(OObjectSerializerHelper.java:
407)
at
com.orientechnologies.orient.core.serialization.serializer.object.OObjectSerializerHelper.typeToStream(OObjectSerializerHelper.java:
337)
at
com.orientechnologies.orient.core.serialization.serializer.object.OObjectSerializerHelper.toStream(OObjectSerializerHelper.java:
311)
at
com.orientechnologies.orient.core.db.object.ODatabaseObjectTx.pojo2Stream(ODatabaseObjectTx.java:
250)
at
com.orientechnologies.orient.core.db.object.ODatabaseObjectTx.save(ODatabaseObjectTx.java:
174)
at
com.orientechnologies.orient.core.db.object.ODatabaseObjectTx.save(ODatabaseObjectTx.java:
151)
at
com.echelon.es.common.db.orient.InheritanceTest.create(InheritanceTest.java:
71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
On 4 Nov., 13:24, Luca Garulli <
l.garu...@gmail.com> wrote:
> Hi,
> the reason is a old bug on auto-discovery of type when you're working in
> schema-less mode. To fix:
> - create a schema for that class with a property of type "binary"
> - checkout latest SVN trunk
>
> What version are you using?
>
> bye,
> Lvc@
>