Добавить типизированную вершину с фреймами в транзакционный граф в OrientDB

1

Доброе утро,

Я пытаюсь использовать график orientDB в транзакционном режиме, и я не знаю почему, но все мои Verteces не сохраняются с типом прокси-класса, который я установил в момент создания.

Вот мой код:

FramedGraphFactory framedFactory = new FramedGraphFactory();
OrientGraph instance = graphFactory.getTx();
FramedTransactionalGraph<OrientGraph> framedGraph=framedFactory.create(instance);

(GraphFactory вводится через Spring)

SocialUser social = getGraph().addVertex(UUID.randomUUID(), SocialUser.class);
    social.setSocialId(lr.getSocialId() + "_" + lr.getSocial());
    social.setCreationDate(new Date());
    social.setLastLopginDate(new Date());
    social.setUserInfo(lr.getInfo());
    OrientVertex socialV = (OrientVertex) social.asVertex();
    socialV.save();
    getGraph().commit();

(getGraph - это метод в моем классе, который возвращает FramedTransactionalGraph).

Интерфейс SocialUser

public interface SocialUser extends VertexFrame {

@Property("socialId")
void setSocialId(String socialId);

@Property("socialId")
String getSocialId();

@Property("valid")
void setValid(boolean valid);

@Property("valid")
boolean getValid();

@Property("creationDate")
void setCreationDate(Date creationDate);

@Property("creationDate")
Date getCreationDate();

@Property("lastLoginDate")
void setLastLopginDate(Date lastLoginDate);

@Property("lastLoginDate")
Date getLastLoginDate();

@Property("status")
void setStatus(String status);

@Property("status")
String getStatus();

@Property("info")
public void setUserInfo(Map<String, String> userInfo);

@Property("info")
public Map<String, String> getUserInfo();

@Adjacency(label = "usersEdge", direction = Direction.BOTH)
PhysicUser getPhysicUser();

@Adjacency(label = "usersEdge", direction = Direction.BOTH)
void setPhysicUser(PhysicUser physicUser);

@Adjacency(label = "userUvi", direction = Direction.BOTH)
public Iterable<Uvis> getUvis();

@Adjacency(label = "userUvi", direction = Direction.BOTH)
public void setUvis(Uvis uvis);

@Property("uvi")
public String getCurrentUvi();

@Property("uvi")
public void setCurrentUvi(String uvi);

}

Когда я проверяю db, что было сохранено, все мои вершины хранятся в V-классе OrientDB.

Кто-нибудь может мне помочь?

заранее спасибо

С уважением, Стефано

Теги:
orientdb
vertex
transactional
tinkerpop

1 ответ

1
Лучший ответ

К сожалению, Frames не привязывает Java-класс к классу OrientDB, потому что эта концепция отсутствует в TinkerPop Blueprints 2.x.

По этой причине OrientDB использует идентификатор для чтения типа класса, поскольку это единственный параметр, распространяемый на базовую реализацию Graph. Попробуйте сделать:

SocialUser social = getGraph().addVertex("class:SocialUser,"+UUID.randomUUID(), SocialUser.class);
  • 0
    Работает нормально, спасибо! Что вы думаете о моем неправильном решении установить тип вершины? Я думаю, что это проще для чтения и понимания. Еще раз спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню