【问题标题】:How to add a List of Entities in an Entity ? (AppEngine Java)如何在实体中添加实体列表? (AppEngine Java)
【发布时间】:2011-01-13 22:46:53
【问题描述】:

我有一个名为 User 的实体。 我还有另一部实体电影。

我希望用户有一个列表。 但是我的代码有很多例外。 你能解释一下怎么做吗?

谢谢

【问题讨论】:

  • 也许如果您包含您的代码,以及您遇到的异常情况,我们可以提供帮助。

标签: java google-app-engine entity entities


【解决方案1】:

UserMovie 之间的关系示例如下所示:

用户类别:

import java.util.Set;
import com.google.appengine.api.datastore.Key;

public class User {

    @Persistent
    private Set<Key> ownsMovies;

    public void addMovie(Movie movie) {
        // We remember to maintain the relation both ways.
        ownsMovies.add(movie.getKey());
        movie.getOwners().add(getKey());
    }

    public void removeMovie(Movie movie) {
        // We remember to maintain the relation both ways.
        ownsMovies.remove(movie.getKey());
        movie.getOwners().remove(getKey());
    }
}

电影课。

import java.util.Set;
import com.google.appengine.api.datastore.Key;

public class Movie {

    @Persistent
    private Set<Key> owners;

}

【讨论】:

    【解决方案2】:

    也许仍然感兴趣:another nice Stackoverflow answer 很好地解释了使用 JDO 或 JPA 的情况。

    【讨论】:

      【解决方案3】:

      appengine 中没有引用列表属性。您仍然可以使用 db.ListProperty(db.Key) 来存储任何实体键的列表。

      型号:

       class User(db.Model):
         movie_list=db.ListProperty(db.Key)
      
       class Movie(db.Model):
         name=db.StringProperty()
      

      观看次数:

        user=User()
        movies=Movie.gql("")#The Movie entities you want to fetch
      
        for movie in movies:
            user.movie_list.append(data)
      

      /// 这里movie_list存放的是Data实体的key

      Data.get(user.movi​​e_list) 将获取所有其 key 在 data_list 属性中的 Movie 实体

      【讨论】:

        猜你喜欢
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多