@Override
  public void deleteByRelationType(IRelationType relationType) {
    // delete source reference pointing to relation type
    OSQLSynchQuery<ODocument> query =
        new OSQLSynchQuery<>("select * from Relation where relationType = " + relationType.getId());
    List<ODocument> result = db.command(query).execute();

    // remove relation and link
    for (ODocument document : result) {
      ODocument relationLink = getRelationLink(document, true);
      if (relationLink != null && db.load(relationLink.getIdentity()) != null)
        relationLink.delete();

      document.delete();
    }
  }
  @Override
  public List<IRelation> findByRelationType(IRelationType relationType) {
    List<IRelation> list = new LinkedList<>();

    // no NPEs
    if (relationType == null) return list;

    initDb();

    // execute query
    OSQLSynchQuery<ODocument> query =
        new OSQLSynchQuery<>("select * from Relation where relationType = " + relationType.getId());
    List<ODocument> result = db.command(query).execute();

    // populate set
    for (ODocument document : result) list.add(convertToEntity(document));

    return list;
  }