Доброе утро,
Я пытаюсь использовать график 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.
Кто-нибудь может мне помочь?
заранее спасибо
С уважением, Стефано
К сожалению, Frames не привязывает Java-класс к классу OrientDB, потому что эта концепция отсутствует в TinkerPop Blueprints 2.x.
По этой причине OrientDB использует идентификатор для чтения типа класса, поскольку это единственный параметр, распространяемый на базовую реализацию Graph. Попробуйте сделать:
SocialUser social = getGraph().addVertex("class:SocialUser,"+UUID.randomUUID(), SocialUser.class);