2014-01-15 2 views
1

У меня есть база данных OrientDB с встроенным документом с записями, и я не могу прочитать обратно сохраненные объекты. A получить правильное количество элементов, но атрибуты не отображаются в поля моего pojo. Что я делаю неправильно? Какие-нибудь советы?Связывание между объектами Java и записями

Спасибо!

 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 protected]"); 

     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; 
} 

}

ответ

1

Java объектов извлекается непосредственно из OrientDB (как вы делаете в этом примере) является проксированным прозрачно лежащих в их основе записей, позволяя ленивая загрузка их полей. В вашем сценарии вам нужно будет использовать методы Userget, чтобы вызвать совокупность соответствующих полей из БД. Поля имеют значения по умолчанию (все null в вашем случае) до загрузки.

Смотрите также: «Как это работает» в OrientDB Object2RecordJavaBinding

+0

Спасибо за ответ! – Rstrl

Смежные вопросы