我有一种感觉,我在这件事上完全错了。但无论如何。
我有一个sql数据库,它本质上是一个有目的的非规范化表,我构造这个表是为了使这项任务对我来说更容易,所以我可以从一个表中获取内容。
我有一张成双成对的桌子,像这样:
user_lo | user_hi | something_else | other stuff
1000 | 1234 | 1231251654 | 123
1050 | 1100 | 1564654 | 45648
1080 | 1234 | 456444894648 | 1
等等
所以对于我的neo4j图数据库,我希望每个用户ID作为一个节点,其他的东西不是太重要,但基本上是关系中的东西。
我只希望每个用户有一个节点,所以我的感觉是,如果我这样做:
while (rs.next()) {
node_lo = db.createNode();
node_lo.setProperty("user_id", rs.getInt(1));
node_hi = db.createNode();
node_hi.setProperty("user_id", rs.getInt(2));
}
当我们第二次添加user_id1234的节点时,它将只创建一个新节点,但我想要的是它只抓取这个节点,而不是创建它,这样我就可以将它添加到1080的关系中案件。
那么这样做的方法是什么呢?
您可能需要使用Neo4j提供的UniqueNodeFactory。
public Node getOrCreateUserWithUniqueFactory( String username, GraphDatabaseService graphDb )
{
UniqueFactory<Node> factory = new UniqueFactory.UniqueNodeFactory( graphDb, "UserNodes" )
{
@Override
protected void initialize( Node created, Map<String, Object> properties )
{
created.setProperty( "id", properties.get( "id" ) );
}
};
return factory.getOrCreate( "id", id );
}
使用索引进行搜索,如果没有找到结果,则创建一个新索引。
Index<Node> userIndex = graphDatabaseService.index().forNodes('UserNodes');
IndexHits<Node> userNodes = userIndex.get('id', 1234);
if(!userNodes.hasNext()){
//Create new User node
} else {
Node userNode = userNodes.next();
}
这是你要找的手术类型吗?
你看过CREATE UNQUE吗?
如果你不能使用密码,也许你可以使用唯一的节点?
我正在处理一个Spring BootNeo4j应用程序 在保存新密码之前,如何编写自定义密码来检查Priviledge是否存在 UserRole域:@NodeEntity公共类UserRole{ 特权域:
我从我的网络商店API调用中获取XML,其结构非常像下面的示例: 其中有更多的参数,数量取决于许多外部因素。我正在尝试获取用户名,当id“111”和id“112”的值是我要查找的值时 上述代码按预期返回“userOne”和“userTwo”。 问题是,Id“111”要么有值“Param 1 is on”要么什么都没有,如果没有值,它就不会显示在XML中。所以我需要一个表达式来检查id为“111”的
我有以下课程: 我正在尝试实现一种方法: 这将检查是否是的祖先(任何深度,直到根)。 我需要一个密码查询。
我想向文件输入一些内容,但我想首先检查是否存在具有我想要创建的名称的文件。如果是这样,我不想创建任何文件,即使文件是空的。 我的尝试 有什么办法可以做我想做的事吗?
问题内容: 我有一个嵌入了数据库的桌面应用程序。当我执行程序时,我需要检查特定的表是否存在,如果不存在则创建它。 给我的数据库一个名为conn的Connection对象,我该如何检查呢? 问题答案: 您可以使用可用的元数据: 有关更多详细信息,请参见此处。还要注意JavaDoc中的注意事项。
问题内容: 我正在尝试检查$ _POST是否存在,如果存在,则在另一个字符串中打印它,如果不存在,则根本不打印。 像这样的东西: 任何帮助将是巨大的! 问题答案: