OrientDB 2.1.6 Object APIを使用しています。OrientDB:オブジェクトAPIで作成されたレコードと参照の削除
public static class Results {
private String userId;
private String templateId;
private Double totalLength;
private List<String> visibleFields;
private Boolean filterable;
@OneToMany(orphanRemoval = true)
private List<ResultItem> items;
//Generic getters and setters
}
public static class ResultItem {
private String id;
private String vsId;
private String entryTemplateId;
private String objectType;
private String objectTypeLabel;
private String capabilityComment;
private Boolean currentVersion;
private Double contentSize;
private String name;
private String objectStoreId;
private String mimeType;
private HashMap<String, String> attributes;
private Date dateLastModified;
//generic getters and setters
}
これはOrientDBに2つのクラスを作成します。
は、私は2つのこのような1 Nに関係してPOJOを持っています。 Object APIを使用してResultsインスタンスを削除すると、関連するResultItem行が正しく削除されます。私はこのような「コンソール」を使用して、特定のResultItemレコードを削除しようとしています
:
orientdb {db=test}> find references #15:6392 Found
[{rid:#15:6392,referredBy:[1]}] in 0.014000 sec(s).
orientdb {db=test}> delete from ResultItem where @rid=#15:6392 Delete
record(s) '1' in 0.006000 sec(s).
orientdb {db=test}> find references #15:6392 Found
[{rid:#15:6392,referredBy:[1]}] in 0.014000 sec(s).
コンソール出力は、レコードが削除されていることを示唆しているが、それは「参照」を含むように続けます。
これは、オブジェクトapiに戻り、db.detachAll(結果、true);を試してみると、問題として現れます。これは私が仮定しているこの例外をスローする、孤立関係によるものです。
Caused by: java.lang.NullPointerException
at com.orientechnologies.orient.object.db.OObjectLazyList.convertAndDetachAll(OObjectLazyList.java:456)
at com.orientechnologies.orient.object.db.OObjectLazyList.convertAndDetachAll(OObjectLazyList.java:432)
at com.orientechnologies.orient.object.db.OObjectLazyList.detachAll(OObjectLazyList.java:424)
at com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandler.detachAll(OObjectProxyMethodHandler.java:165)
at com.orientechnologies.orient.object.enhancement.OObjectEntitySerializer.detachAll(OObjectEntitySerializer.java:261)
at com.orientechnologies.orient.object.db.OObjectDatabaseTx.detachAll(OObjectDatabaseTx.java:809)
at com.orientechnologies.orient.object.db.OObjectDatabaseTx.detachAll(OObjectDatabaseTx.java:327)
レコードと一緒に関係を削除するにはどうすればよいですか?
を役に立てば幸い... 1つの理由がありますこんにちはフレデリック、あなたのケースを試すために小さなDBテストやJavaコード全体がありますか? – LucaS
本当に。しかし、私は2つのPOJOを記述に加えて、レコードを削除した後に残った参照を示すコンソールコマンドを貼り付けました。結果POJOをテストデータでインスタンス化し、Object APIを使用して結果のオブジェクトを保存することによって再現することができます。 –