Проблема с коллекциями в GAE - PullRequest
0 голосов
/ 06 августа 2010

Обучение GAE У меня есть некоторые проблемы. Я хочу сохранить список контактов моих пользователей в базе данных. Я использую addUser (), чтобы добавить нового пользователя, и это работает. Но когда я обновляю страницу, список становится пустым (не нулевым). В GAE «Datastore Viewer» поле «list» пустое, но в приложении оно существует.

@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true")
public class ContactList implements IUserList { 

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;

    @Persistent
    protected List<Key> list;

    @Persistent(mappedBy = "contactList")
    private User user;  

    public Key getKey(){
        return this.key;
    }

    public User getUser() {
        return user;
    }

    public ContactList(User user) {
        this.list = new ArrayList<Key>(); //this line invoice one only 
    }

    @Override
    public Boolean addUser(User user) {
        if(this.list.contains(user.getKey())){
            return false;
        }else{      
            this.list.add(user.getKey());

            return true;
        }
    }

    @Override
    public boolean containsKey(Long id) {
        return false; //this.list.containsKey(id);
    }

    @Override
    public User get(Long id) {
        return null;// this.list.get(id);
    }

    @Override
    public void removeUser(User user) {
        this.list.remove(user.getKey());    
    }

    @Override
    public int size() {
        return this.list.size();
    }

    @Override
    public List<User> users() {

        ArrayList<User> users = new ArrayList<User>(); 

        for(Key key : this.list) {
            User user = UserManager.getInstance().getUser(key);
            users.add(user);
        }       

        return users;
    }

    @Override
    public void addEvent(IEvent event) {
        for(User user : this.users()) {
            user.addEvent(event);
        }
    }

    @Override
    public void clearEvents() {
    }

    @Override
    public ArrayList<IEvent> getEvents() {
        return null;
    }



}

1 Ответ

1 голос
/ 06 августа 2010

Вы не сохраняете свои данные в своей базе данных, поэтому вы фактически выполняете призрачные чтения.

Способы сохранения ваших данных: http://code.google.com/appengine/docs/java/datastore/creatinggettinganddeletingdata.html

...