타이탄 데이터베이스의 기본 객체를 직렬화합니다. 그러나 doesnt 일. 내 titan 데이터베이스에 등록하기 위해 객체를 직렬화하고 싶습니다. 그러나 나는 왜이 문제가 있는지 이해하지 못한다. 내 소스 코드를 게시하고 당신이 문서를 가지고 있다면 그것은 내가 받아 들일 수있는 즐거움이다.타이탄 데이터베이스에서 kryo로 객체 직렬화
public class Attribute implements KryoSerializable {
private String typeunit;
private Object value;
private String valueS;
public Attribute() {
this.typeunit = "";
this.value = null;
this.valueS = "";
}
public void setValue(String type, Object value) {
this.typeunit = type;
this.value = value;
try {
if(value instanceof java.lang.String) {
this.valueS = (String) value;
}
} catch(Exception e) {
}
}
public Object getValue() {
return value;
}
public String getValueS() {
return valueS;
}
public String getTypeunit() {
return typeunit;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return super.equals(obj);
}
public void read(Kryo kryo, Input input) {
this.typeunit = input.readString();
this.value = kryo.readObject(input, Object.class);
this.valueS = input.readString();
}
public void write(Kryo kryo, Output output) {
kryo.register(Object.class);
output.writeString(this.typeunit);
kryo.writeObject(output, this.value);
output.writeString(this.valueS);
}
}
을 그리고 난이 시도 후 :
일반적으로 난 내 객체를 생성
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -2
at java.util.ArrayList.elementData(ArrayList.java:400)
at java.util.ArrayList.get(ArrayList.java:413)
at com.esotericsoftware.kryo.util.MapReferenceResolver.getReadObject(MapReferenceResolver.java:42)
at com.esotericsoftware.kryo.Kryo.readReferenceOrNull(Kryo.java:773)
at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:624)
at XXXX.XXXXXX.Attribute.read(Attribute.java:140)
at com.esotericsoftware.kryo.serializers.DefaultSerializers$KryoSerializableSerializer.read(DefaultSerializers.java:363)
at com.esotericsoftware.kryo.serializers.DefaultSerializers$KryoSerializableSerializer.read(DefaultSerializers.java:355)
at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
at com.thinkaurelius.titan.graphdb.database.serialize.kryo.KryoSerializer.readClassAndObject(KryoSerializer.java:119)
at com.thinkaurelius.titan.graphdb.database.EdgeSerializer.parseRelation(EdgeSerializer.java:211)
at com.thinkaurelius.titan.graphdb.database.EdgeSerializer.readRelation(EdgeSerializer.java:119)
at com.thinkaurelius.titan.graphdb.database.EdgeSerializer.readRelation(EdgeSerializer.java:59)
at com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx$4$3.apply(StandardTitanTx.java:780)
at com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx$4$3.apply(StandardTitanTx.java:777)
at com.google.common.collect.Iterators$8.transform(Iterators.java:860)
at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
at com.thinkaurelius.titan.graphdb.query.LimitAdjustingIterator.next(LimitAdjustingIterator.java:55)
at com.thinkaurelius.titan.graphdb.query.QueryProcessor$OuterIterator.nextInternal(QueryProcessor.java:76)
at com.thinkaurelius.titan.graphdb.query.QueryProcessor$OuterIterator.<init>(QueryProcessor.java:65)
at com.thinkaurelius.titan.graphdb.query.QueryProcessor.iterator(QueryProcessor.java:46)
at com.thinkaurelius.titan.graphdb.vertices.AbstractVertex.getProperty(AbstractVertex.java:105)
at com.thinkaurelius.titan.graphdb.vertices.AbstractVertex.getProperty(AbstractVertex.java:121)
당신이 날 도와 줘요 수 :
Vertex r = this.model.addVertex(null);
r.setProperty("uuid", UUID.randomUUID().toString());
r.setProperty("object", attr);
this.model.commit();
for(Vertex vertex : this.model.query().vertices()) {
Attribute test = vertex.getProperty("object");
System.out.println(test.getTypeunit());
}
을하지만 난 예외가?
감사합니다.
'TitanFactory.open()'에주는'Configuration' 또는 속성 파일을 게시하십시오. –
괜찮 았어. 고마워. 이것은 단지 기본 속성 파일입니다 : storage.backend = persistit storage.directory =/tmp/titanexample storage.buffercount = 5000 – AkrogAmes