0

私は最近、OrientDB オブジェクト データベースを使用していますが、奇妙なつまずき点にぶつかりました。保存したいオブジェクトの一部にはメンバーとして BigIntegers があり、何らかの理由でデータベースにブール値として保存されています。ここにあるサンプル コードを使用してみました。以下に示す短いサンプルと Maven の依存関係がありますが、ここに 2 つの質問があります。

これを機能させるために、なぜこれが機能しないのですか?

理解を深めるために、ブール値はどのように考え出されるのでしょうか?

サンプルコード:

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 依存関係:

<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>
4

1 に答える 1