Ich habe in letzter Zeit mit der OrientDB -Objektdatenbank gearbeitet, aber ich habe einen seltsamen Stolperpunkt erreicht. Einige der Objekte, die ich speichern möchte, haben Bigintleger als Mitglieder und aus irgendeinem Grund speichern sie in der Datenbank als Boolescher. Ich habe versucht, den gefundenen Beispielcode zu verwenden hier. Ich habe ein kurzes Beispiel und meine Maven -Abhängigkeiten nachstehend zu demonstrieren, aber hier sind meine zwei Fragen:
Warum funktioniert das nicht, um dies zum Laufen zu bringen?
Wie kommt es auf Boolesche, um besser zu verstehen?
Beispielcode:
package test;
import java.math.BigInteger;
import java.util.List;
import com.orientechnologies.orient.core.serialization.serializer.object.OObjectSerializer;
import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery;
import com.orientechnologies.orient.object.db.OObjectDatabaseTx;
import com.orientechnologies.orient.object.serialization.OObjectSerializerContext;
import com.orientechnologies.orient.object.serialization.OObjectSerializerHelper;
public class HashmapIterationTest {
public static void main(String[] args) throws Exception{
Runner r = new Runner();
r.run();
}
public static class Runner{
private OObjectDatabaseTx db;
public void run() throws Exception{
db = new OObjectDatabaseTx("plocal:c:/testodb");
if(db.exists()){
db.open("admin", "admin");
}else{
db.create();
}
//Hack for BigInteger
OObjectSerializerContext serializerContext = new OObjectSerializerContext();
serializerContext.bind(new OObjectSerializer<BigInteger, Long>() {
public Long serializeFieldValue(Class<?> itype, BigInteger iFieldValue) {
return iFieldValue.longValue();
}
public BigInteger unserializeFieldValue(Class<?> itype, Long iFieldValue) {
return BigInteger.valueOf(iFieldValue);
}
});
OObjectSerializerHelper.bindSerializerContext(null, serializerContext);
db.getEntityManager().registerEntityClass(Parent.class);
db.save(new Parent(5));
List<Parent> result = db.query(new OSQLSynchQuery<Parent>("select from parent"));
for(Parent p: result){
System.out.println("Parent: " + p.getBigInt());
}
}
}
public static class Parent{
BigInteger bigInt;
public Parent(){
}
public Parent(int test){
this.bigInt = BigInteger.valueOf(test);
}
public void setBigInt(BigInteger bigInt){
this.bigInt = bigInt;
}
public BigInteger getBigInt(){
return bigInt;
}
public String toString(){
return "Parent: " + getBigInt();
}
}
}
Maven -Abhängigkeiten für Versionsinformationen:
<dependency>
<groupId>com.orientechnologies</groupId>
<artifactId>orient-commons</artifactId>
<version>1.5.1</version>
<type>bundle</type>
</dependency>
<dependency>
<groupId>com.orientechnologies</groupId>
<artifactId>orientdb-core</artifactId>
<version>1.5.1</version>
<type>bundle</type>
</dependency>
<dependency>
<groupId>com.orientechnologies</groupId>
<artifactId>orientdb-object</artifactId>
<version>1.5.1</version>
<type>bundle</type>
</dependency>