在 OrientDB 的事务图中添加带有框架的类型化顶点
Add typed Vertex with Frames in transactional graph in OrientDB
早上好,
我正在尝试在事务模式下使用 orientDB 图,我不知道为什么,但我的所有顶点都没有使用我在创建时设置的代理类型 class 保存。
这是我的代码:
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 是我 class 中的一个方法,即 return FramedTransactionalGraph)。
社交用户界面
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);
}
当我在数据库中检查保存的内容时,我所有的顶点都存储在 OrientDB 的 V class 中。
有人可以帮助我吗?
提前致谢
问候,Stefano
不幸的是,Frames 没有将 Java Class 绑定到 OrientDB class,因为 TinkerPop Blueprints 2.x.[=11= 中没有这个概念]
出于这个原因,OrientDB 使用 id 来读取 class 类型,因为它是传播到底层 Graph 实现的唯一参数。尝试做:
SocialUser social = getGraph().addVertex("class:SocialUser,"+UUID.randomUUID(), SocialUser.class);
早上好,
我正在尝试在事务模式下使用 orientDB 图,我不知道为什么,但我的所有顶点都没有使用我在创建时设置的代理类型 class 保存。
这是我的代码:
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 是我 class 中的一个方法,即 return FramedTransactionalGraph)。
社交用户界面
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);
}
当我在数据库中检查保存的内容时,我所有的顶点都存储在 OrientDB 的 V class 中。
有人可以帮助我吗?
提前致谢
问候,Stefano
不幸的是,Frames 没有将 Java Class 绑定到 OrientDB class,因为 TinkerPop Blueprints 2.x.[=11= 中没有这个概念]
出于这个原因,OrientDB 使用 id 来读取 class 类型,因为它是传播到底层 Graph 实现的唯一参数。尝试做:
SocialUser social = getGraph().addVertex("class:SocialUser,"+UUID.randomUUID(), SocialUser.class);