私は最近、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>