2014-05-23 36 views
5

Tôi đang sử dụng OrientDB trong một tình huống nhúng trong Java. Tôi đang tạo cơ sở dữ liệu và các lớp trong ứng dụng của tôi và chèn dữ liệu. Khi tôi đi xem dữ liệu thông qua giao diện điều khiển, tôi có thể thấy các lớp trong cơ sở dữ liệu, cùng với số hàng chính xác trong các lớp. Tuy nhiên khi tôi cố gắng để duyệt qua các dữ liệu trong lớp thông qua lệnh này browse class testData, tôi nhận được lỗi sauLỗi OrientDB khi cố duyệt qua một lớp thông qua bảng điều khiển

Error: com.orientechnologies.orient.core.exception.OSerializationException: Found invalid % character. Ensure it is opened and closed correctly.

tôi đã lùng sục nguồn dữ liệu của tôi và nó không chứa bất kỳ %. Tôi biết rằng OrientDB là nhạy cảm với khoảng cách đặc biệt là xung quanh các ký tự như ) nhưng một lần nữa dữ liệu mà tôi đã không sử dụng các ký tự mà có vẻ như là một lỗi.

Có ai đã gặp lỗi này không? Bất kỳ ý tưởng về cách giải quyết lỗi?

Mã để tạo cơ sở dữ liệu

private void createNewOrientDatabase(){ 
    String dbPath = "plocal:./db/test"; 
    orientDatabase = new ODatabaseDocumentTx(dbPath).create(); 
} 

Mã để tạo các lớp

public void createClasses(Table t){ 
    if(orientDatabase.getMetadata().getSchema().getClass(t.getName()) == null) { 
     orientDatabase.getMetadata().getSchema().createClass(t.getName()); 
    } 
} 

Mã để chèn dữ liệu

public void insertData(Table table, TableSource data){ 
    for (String s : data){ 
     ODocument document = new ODocument(table.getName()); 
     String[] parts = s.split(","); 
     for(int i = 0; i < table.getColumns().size(); ++i){ 
      document.field(table.getColumns().get(i).getName(),parts[i]); 
     } 
     document.save(); 
    } 
} 

Có nhiều lớp nhưng đối với lớp học, dữ liệu có thể trông giống như thế này 43840,533,1,1,3,4 chỉ để cung cấp cho bạn ý tưởng về dữ liệu trông như thế nào.

Như mọi khi, cảm ơn trước vì bất kỳ trợ giúp nào!

Trả lời

2

Tìm thấy nguyên nhân của lỗi ...

Khi tôi đã phân tích dữ liệu nguồn của tôi cho các tên cột, họ theo hình thức integer name; và tôi đã quên tước ; từ tên. Vì vậy, khi tôi tạo trường trong tài liệu, tên có số ; ở cuối và điều này đã gây ra lỗi khi cố duyệt qua lớp trong bảng điều khiển OrientDB.

Các vấn đề liên quan