Java对象和记录之间的绑定

Java对象和记录之间的绑定,java,nosql,orientdb,Java,Nosql,Orientdb,我有一个嵌入式基于文档的OrientDB数据库,其中包含记录,无法读回保存的实体。A获取正确数量的元素,但属性未映射到我的pojo字段。 我做错了什么?有什么建议吗 谢谢 OObjectDatabaseTx db = new OObjectDatabaseTx("local:db"); if (db.exists()) { db = new OObjectDatabaseTx("local:db").open("admin", "admin

我有一个嵌入式基于文档的OrientDB数据库,其中包含记录,无法读回保存的实体。A获取正确数量的元素,但属性未映射到我的pojo字段。 我做错了什么?有什么建议吗

谢谢

        OObjectDatabaseTx db = new OObjectDatabaseTx("local:db");
        if (db.exists()) {
            db = new OObjectDatabaseTx("local:db").open("admin", "admin");
        } else {
            db.create();
        }

        db.getEntityManager().registerEntityClass(User.class);

        long cnt = db.countClass(User.class);
        System.out.println(cnt); // OK

        User user = db.newInstance(User.class, "Firstname", "Lastname", "email@example.com");

        db.begin();
        db.save(user); // it's OK, the DB contains this document, I can select it with the servers console
        db.commit();

        for (User usr : db.browseClass(User.class)) {
            System.out.println(usr); // User object with null fields, why?
        }
用户类:

public class User {

private String firstname;

private String lastname;

private String email;

public User() {
}

public User(String firstname, String lastname, String email) {
    this.firstname = firstname;
    this.lastname = lastname;
    this.email = email;
}

public String getFirstname() {
    return firstname;
}

public void setFirstname(String firstname) {
    this.firstname = firstname;
}

public String getLastname() {
    return lastname;
}

public void setLastname(String lastname) {
    this.lastname = lastname;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

@Override
public String toString() {
    return firstname + " " + lastname + " " + email;
}

}

直接从OrientDB检索的Java对象(正如您在本例中所做的那样)被透明地代理到它们的底层记录,从而允许延迟加载它们的字段。在您的场景中,您必须使用
User
object
get
方法来触发数据库中相应字段的填充。在加载之前,这些字段具有默认值(在您的情况下为all
null


另请参见

中的“如何工作”,如Orientdb文档的绑定部分所述,您必须为要绑定的每个java对象提供一个空构造函数。来源:

谢谢你的回答!