Java对象和记录之间的绑定
我有一个嵌入式基于文档的OrientDB数据库,其中包含记录,无法读回保存的实体。A获取正确数量的元素,但属性未映射到我的pojo字段。 我做错了什么?有什么建议吗 谢谢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
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
objectget
方法来触发数据库中相应字段的填充。在加载之前,这些字段具有默认值(在您的情况下为allnull
)
另请参见中的“如何工作”,如Orientdb文档的绑定部分所述,您必须为要绑定的每个java对象提供一个空构造函数。来源:谢谢你的回答!