具有给定名称的Titan Key不存在

时间:2014-06-16 08:42:50

标签: titan

我创建了两个索引但是当我想调用vertex.setProperties()时,我的程序会提示“给定名称不存在。”。以下是我的代码:

 initDB

 public void tstInitHBase() {
        Configuration conf = new BaseConfiguration();

        conf.setProperty("storage.backend", "hbase");
        conf.setProperty("storage.hostname", "192.168.22.209");
        conf.setProperty("storage.port", "2181");
        conf.setProperty("storage.tablename", "social_map");

        conf.setProperty("cache.db-cache", "true");
        conf.setProperty("cache.db-cache-clean-wait", "20");
        conf.setProperty("cache.db-cache-time", "180000");
        conf.setProperty("cache.db-cache-size", "0.5");

        GraphDatabaseConfiguration graphconfig = new GraphDatabaseConfiguration(conf);
        try {
            graphconfig.getBackend().clearStorage();
        } catch (StorageException e) {
            e.printStackTrace();
            throw new RuntimeException("Techvalley:ERROR 清空数据库失败");
        }


        TitanGraph graph = TitanFactory.open(conf);
        graph.makeKey("PKID").dataType(String.class).indexed(Vertex.class).unique(UniquenessConsistency.LOCK).make();
        graph.makeKey("CN_NAME").dataType(String.class).indexed(Vertex.class).make();
        graph.makeKey("EDGE_PEERS_WEIGHT").dataType(Long.class).indexed(Edge.class).make();
        graph.commit();
    }

用猪插入数据

//objList structure is like (uuid,cn_name,gender,..)
vertex = tx.getVertex(DataType.toString(objList.get(0)));

            if (vertex == null) {
                logger.info("create node");
                vertex = tx.addVertex(DataType.toString(objList.get(0)));
                vertex.setProperty(flied[0], DataType.toString(objList.get(0)));
            } 

            /**
             * 
             * */
            for (int i = 1; i < flied.length; i++) {
                switch (DataType.findType(objList.get(i))) {
                case DataType.NULL:
                    logger.info("cache" + flied[i] + " " + DataType.toString(objList.get(i)));
                    ElementHelper.setProperties(vertex, flied[i],DataType.toString(objList.get(i)));
                    break;
                case DataType.CHARARRAY:
                    logger.info("cache" + flied[i] + " " + DataType.toString( objList.get(i)));
                    ElementHelper.setProperties(vertex, flied[i],DataType.toString(objList.get(i)));
                    break;
                default:
                    break;
                }
            }

执行ElementHelper.setProperties(vertex,flied[i],DataType.toString(objList.get(i)));时,我的程序始终返回'给定名称的密钥不存在'。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

通过在try / catch中包装ElementHelper.setProperties并记录/打印属性键名来找出有问题的属性键。然后将其添加到graph.makeKey set。