【问题标题】:Persisting Blobs using Objectify使用 Objectify 持久化 Blob
【发布时间】:2012-05-21 05:30:34
【问题描述】:

虽然我知道 Appengine 已经有 Blob 服务,但我想尝试在数据存储区中存储大 Blob。

基本上我正在尝试使用 Objectify 来持久化这个对象:

BigBlob.java

BigBlobFragments.java

但是,appengine 抱怨说:“BigBlobFragment is not a supported property type

对于 BigBlob 类型,我创建了一个带有 CRUD 操作的 DAO 类,并像这样注册类型:

static {
    ObjectifyService.register(BigBlob.class);
    //ObjectifyService.register(BigBlobFragment.class);
}

protected BigblobDaoImpl() {
    super(BigBlob.class);
}

我实际上也尝试过注册 BigBlobFragment。

希望有人可以分享一些关于如何使用 Objectify 实际持久化大 blob 和片段的想法。

【问题讨论】:

    标签: google-app-engine objectify


    【解决方案1】:

    我自己没有使用过 Blob,但我注意到您的实体上方有 @PersistenceCapable...应该是 @Entity。

    import com.googlecode.objectify.annotation.Entity;
    

    那么您应该可以使用 Objectify 注册您的实体。

    ObjectifyService.register(BigBlob.class);
    

    【讨论】:

    • 我的意思是,我认为问题在于 BigBlog 的底层字段类,即 BigBlobFragment
    • @xybrek 我看到您在 BigBlob 中为 BigBlobFragment 成员提供了持久注释。您需要 Embed annotation(for ofy4) 或 Embedded (for ofy3)
    • 你的意思是:javax.persistence.Embedded;不是 javax.jdo.annotations.Embedded;对吗?
    • 对象化 3 是的; objectify 4 有自己的 Embed 注解。
    【解决方案2】:

    您需要同时注册 BigBlob 和 BigBlobFragment,并将所有 JDO 注释替换为 Objectify 注释(假设您使用的是 ofy4。您可能还需要考虑将 BigBlobFragment 对象嵌入到 BigBlob 中,以使用 @Embed 提高性能。

    【讨论】:

      猜你喜欢
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 2012-12-14
      • 2012-10-25
      • 1970-01-01
      • 2019-06-04
      • 2018-11-24
      相关资源
      最近更新 更多