Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将java.lang.String强制转换为com.orientechnologies.orient.core.db.record.Oidentiable_Java_Orientdb - Fatal编程技术网

无法将java.lang.String强制转换为com.orientechnologies.orient.core.db.record.Oidentiable

无法将java.lang.String强制转换为com.orientechnologies.orient.core.db.record.Oidentiable,java,orientdb,Java,Orientdb,当我试图用一个映射字段保存一个简单的POJO时,出现以下异常 线程“main”java.lang.ClassCastException中出现异常:无法将java.lang.String转换为com.orientechnologies.orient.core.db.record.OIdentifiable 这是我的密码: package com.example.test; import com.orientechnologies.orient.client.remote.OServerAdmin

当我试图用一个映射字段保存一个简单的POJO时,出现以下异常

线程“main”java.lang.ClassCastException中出现异常:无法将java.lang.String转换为com.orientechnologies.orient.core.db.record.OIdentifiable

这是我的密码:

package com.example.test;

import com.orientechnologies.orient.client.remote.OServerAdmin;
import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
import com.orientechnologies.orient.object.db.OObjectDatabaseTx;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class Main {

    static class Entity {

        private Map map;

        public Entity() {
        }

        public Entity(Map map) {
            this.map = map;
        }

        public Map getMap() {
            return map;
        }

        public void setMap(Map map) {
            this.map = map;
        }
    }

    private static void doIt() {
        String dbUser = "root";
        String dbPass = "root";
        String dbUrl = "remote:localhost:2424/sandbox";
        try {
            OServerAdmin serverAdmin = new OServerAdmin(dbUrl);
            serverAdmin.connect(dbUser, dbPass);
            if (serverAdmin.existsDatabase("plocal")) {
                serverAdmin.dropDatabase("plocal");
            }
            serverAdmin.createDatabase("document", "plocal");
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
        ODatabaseDocumentTx databaseDocumentTx = new ODatabaseDocumentTx(dbUrl);
        databaseDocumentTx.open(dbUser, dbPass);

        OObjectDatabaseTx objectDatabaseTx = new OObjectDatabaseTx(databaseDocumentTx);
        objectDatabaseTx.getEntityManager().registerEntityClass(Entity.class);

        Map map = new HashMap();
        map.put("a", "a");
        Entity entity = objectDatabaseTx.save(new Entity(map)); //<-- EXCEPTION THROWN HERE!!!
    }

    public static void main(String[] args) {
        doIt();
    }

}

任何关于正在发生的事情的指导都将不胜感激

我已经使用了这段代码,它很有效

import com.orientechnologies.orient.client.remote.OServerAdmin;
import com.orientechnologies.orient.object.db.OObjectDatabaseTx;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class Main {

    static class Entity {

        private Map<String,Object> map;

        public Entity() {
            this.map=null;
        }

        public Entity(Map<String,Object> map) {
            this.map = map;
        }

        public Map<String,Object> getMap() {
            return map;
        }

        public void setMap(Map<String,Object> map) {
            this.map = map;
        }
    }

    private static void doIt() {
        String dbUser = "root";
        String dbPass = "root";
        String dbUrl = "remote:localhost:2424/sandbox";
        try {
            OServerAdmin serverAdmin = new OServerAdmin(dbUrl);
            serverAdmin.connect(dbUser, dbPass);
            if (serverAdmin.existsDatabase("plocal")) {
                serverAdmin.dropDatabase("plocal");
                System.out.println("Db cancellalto");
            }
            //serverAdmin.createDatabase("document", "plocal");
            serverAdmin.createDatabase("sandbox", "object", "plocal");
            System.out.println("Db creato");
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }

        OObjectDatabaseTx objectDatabaseTx = new OObjectDatabaseTx(dbUrl);
        objectDatabaseTx.open(dbUser,dbPass);
        objectDatabaseTx.getEntityManager().registerEntityClass(Entity.class);


        Entity e = objectDatabaseTx.newInstance(Entity.class);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("a", "a");
        e.setMap(map);

        // Save the entity
        e = objectDatabaseTx.save(e);

    }

    public static void main(String[] args) {
        doIt();
    }

}
导入com.orientechnologies.orient.client.remote.OServerAdmin;
导入com.orientechnologies.orient.object.db.OObjectDatabaseTx;
导入java.io.IOException;
导入java.util.HashMap;
导入java.util.Map;
公共班机{
静态类实体{
私人地图;
公共实体(){
this.map=null;
}
公共实体(地图){
this.map=map;
}
公共地图getMap(){
返回图;
}
公共无效集合映射(映射映射){
this.map=map;
}
}
私有静态void doIt(){
字符串dbUser=“root”;
字符串dbPass=“root”;
String dbUrl=“remote:localhost:2424/sandbox”;
试一试{
OServerAdmin serverAdmin=新的OServerAdmin(dbUrl);
serverAdmin.connect(dbUser,dbPass);
if(serverAdmin.existsDatabase(“plocal”)){
serverAdmin.dropDatabase(“plocal”);
System.out.println(“Db CancelAlto”);
}
//serverAdmin.createDatabase(“document”、“plocal”);
createDatabase(“沙盒”、“对象”、“plocal”);
System.out.println(“Db creato”);
}捕获(IOE异常){
e、 printStackTrace();
抛出新的运行时异常(e);
}
OObjectDatabaseTx objectDatabaseTx=新OObjectDatabaseTx(dbUrl);
open(dbUser,dbPass);
objectDatabaseTx.getEntityManager().registerEntityClass(Entity.class);
实体e=objectDatabaseTx.newInstance(实体.class);
Map Map=newhashmap();
地图放置(“a”、“a”);
e、 setMap(map);
//保存实体
e=objectDatabaseTx.save(e);
}
公共静态void main(字符串[]args){
doIt();
}
}


希望它能有所帮助

我已经使用了这段代码,而且很有效

import com.orientechnologies.orient.client.remote.OServerAdmin;
import com.orientechnologies.orient.object.db.OObjectDatabaseTx;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class Main {

    static class Entity {

        private Map<String,Object> map;

        public Entity() {
            this.map=null;
        }

        public Entity(Map<String,Object> map) {
            this.map = map;
        }

        public Map<String,Object> getMap() {
            return map;
        }

        public void setMap(Map<String,Object> map) {
            this.map = map;
        }
    }

    private static void doIt() {
        String dbUser = "root";
        String dbPass = "root";
        String dbUrl = "remote:localhost:2424/sandbox";
        try {
            OServerAdmin serverAdmin = new OServerAdmin(dbUrl);
            serverAdmin.connect(dbUser, dbPass);
            if (serverAdmin.existsDatabase("plocal")) {
                serverAdmin.dropDatabase("plocal");
                System.out.println("Db cancellalto");
            }
            //serverAdmin.createDatabase("document", "plocal");
            serverAdmin.createDatabase("sandbox", "object", "plocal");
            System.out.println("Db creato");
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }

        OObjectDatabaseTx objectDatabaseTx = new OObjectDatabaseTx(dbUrl);
        objectDatabaseTx.open(dbUser,dbPass);
        objectDatabaseTx.getEntityManager().registerEntityClass(Entity.class);


        Entity e = objectDatabaseTx.newInstance(Entity.class);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("a", "a");
        e.setMap(map);

        // Save the entity
        e = objectDatabaseTx.save(e);

    }

    public static void main(String[] args) {
        doIt();
    }

}
导入com.orientechnologies.orient.client.remote.OServerAdmin;
导入com.orientechnologies.orient.object.db.OObjectDatabaseTx;
导入java.io.IOException;
导入java.util.HashMap;
导入java.util.Map;
公共班机{
静态类实体{
私人地图;
公共实体(){
this.map=null;
}
公共实体(地图){
this.map=map;
}
公共地图getMap(){
返回图;
}
公共无效集合映射(映射映射){
this.map=map;
}
}
私有静态void doIt(){
字符串dbUser=“root”;
字符串dbPass=“root”;
String dbUrl=“remote:localhost:2424/sandbox”;
试一试{
OServerAdmin serverAdmin=新的OServerAdmin(dbUrl);
serverAdmin.connect(dbUser,dbPass);
if(serverAdmin.existsDatabase(“plocal”)){
serverAdmin.dropDatabase(“plocal”);
System.out.println(“Db CancelAlto”);
}
//serverAdmin.createDatabase(“document”、“plocal”);
createDatabase(“沙盒”、“对象”、“plocal”);
System.out.println(“Db creato”);
}捕获(IOE异常){
e、 printStackTrace();
抛出新的运行时异常(e);
}
OObjectDatabaseTx objectDatabaseTx=新OObjectDatabaseTx(dbUrl);
open(dbUser,dbPass);
objectDatabaseTx.getEntityManager().registerEntityClass(Entity.class);
实体e=objectDatabaseTx.newInstance(实体.class);
Map Map=newhashmap();
地图放置(“a”、“a”);
e、 setMap(map);
//保存实体
e=objectDatabaseTx.save(e);
}
公共静态void main(字符串[]args){
doIt();
}
}


希望它能有所帮助

在深入研究之后,我将回答我自己的问题。通过将Entity.map字段显式声明为OType.EMBEDDEDMAP,我可以使代码正常工作。见下文:

        ...
        objectDatabaseTx.getEntityManager().registerEntityClass(Entity.class);
        OClass oClass = objectDatabaseTx.getMetadata().getSchema().getClass(Entity.class);
        oClass.createProperty("map", OType.EMBEDDEDMAP);
        ...
但是,我最终需要映射包含任何值(即:
map
)。但我不能,因为有一个开放的错误


各位,就这样吧……

在深入研究之后,我将回答我自己的问题。通过将Entity.map字段显式声明为OType.EMBEDDEDMAP,我可以使代码正常工作。见下文:

        ...
        objectDatabaseTx.getEntityManager().registerEntityClass(Entity.class);
        OClass oClass = objectDatabaseTx.getMetadata().getSchema().getClass(Entity.class);
        oClass.createProperty("map", OType.EMBEDDEDMAP);
        ...
但是,我最终需要映射包含任何值(即:
map
)。但我不能,因为有一个开放的错误


各位,就是这样…

您的Java版本是否<5?您真的应该在
映射上使用泛型。另外,您需要指出哪一行抛出异常。您的Java版本<5吗?您确实应该在
映射上使用泛型。此外,您还需要指出引发异常的行。