Java GAE中的集合问题
学习GAE我遇到了一些问题。我想在数据库中保存用户的联系人列表。我使用addUser()添加新用户,它可以正常工作。但是当我刷新页面时,列表是空的(不是空的)。在GAE“数据存储查看器”中,“列表”字段为空,但在应用程序中它存在Java GAE中的集合问题,java,google-app-engine,collections,google-cloud-datastore,Java,Google App Engine,Collections,Google Cloud Datastore,学习GAE我遇到了一些问题。我想在数据库中保存用户的联系人列表。我使用addUser()添加新用户,它可以正常工作。但是当我刷新页面时,列表是空的(不是空的)。在GAE“数据存储查看器”中,“列表”字段为空,但在应用程序中它存在 @PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true") public class ContactList implements IUserList { @
@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;
}
}
@PersistenceCapable(identityType=identityType.APPLICATION,detaccable=“true”)
公共类ContactList实现IUserList{
@主键
@持久性(valueStrategy=IdGeneratorStrategy.IDENTITY)
私钥;
@持久的
受保护名单;
@持久(mappedBy=“contactList”)
私人用户;
公钥getKey(){
返回此.key;
}
公共用户getUser(){
返回用户;
}
公共联系人列表(用户){
this.list=new ArrayList();//此行只开一张发票
}
@凌驾
公共布尔addUser(用户){
if(this.list.contains(user.getKey())){
返回false;
}否则{
this.list.add(user.getKey());
返回true;
}
}
@凌驾
公共布尔containsKey(长id){
返回false;//this.list.containsKey(id);
}
@凌驾
公共用户获取(长id){
返回null;//this.list.get(id);
}
@凌驾
public void removeUser(用户用户){
this.list.remove(user.getKey());
}
@凌驾
公共整数大小(){
返回此.list.size();
}
@凌驾
公共列表用户(){
ArrayList用户=新建ArrayList();
for(键:this.list){
User User=UserManager.getInstance().getUser(键);
用户。添加(用户);
}
返回用户;
}
@凌驾
公共事件(IEvent事件){
for(用户:this.users()){
user.addEvent(事件);
}
}
@凌驾
公共事件{
}
@凌驾
公共ArrayList getEvents(){
返回null;
}
}
您没有将数据持久化到数据库中,因此实际上是在执行重影读取
保存数据的方法:我考虑过这个问题。但我使用的是'detachable=“true'”。我是手工做的吗?