Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java com.google.appengine.api.datastore.Text的替代方案?_Java_Google App Engine_Jpa - Fatal编程技术网

Java com.google.appengine.api.datastore.Text的替代方案?

Java com.google.appengine.api.datastore.Text的替代方案?,java,google-app-engine,jpa,Java,Google App Engine,Jpa,在Google App Engine中,JPA实体ajava.lang.String限制为500个字符,而a的大小不受限制(需要注意的是,entityManager.persist不能处理大于1MB的实体-我相信,但找不到关于它的参考) 然而,如果我使用谷歌特有的文本类型,我会将我的应用程序与谷歌应用程序引擎紧密结合。我想知道是否有更轻量级的方法来实现相同的结果,比如通过一些标准注释 也许,用JSR-303注释注释字符串。如果大小大于500,它将知道使用非索引文本类型。示例:@Size(最大值=

在Google App Engine中,JPA实体a
java.lang.String
限制为500个字符,而a的大小不受限制(需要注意的是,entityManager.persist不能处理大于1MB的实体-我相信,但找不到关于它的参考)

然而,如果我使用谷歌特有的
文本
类型,我会将我的应用程序与谷歌应用程序引擎紧密结合。我想知道是否有更轻量级的方法来实现相同的结果,比如通过一些标准注释

也许,用JSR-303注释注释
字符串
。如果大小大于500,它将知道使用非索引文本类型。示例:
@Size(最大值=3000)

很明显,我只是在做梦,但也许有一些标准方法可以避免特定于应用程序引擎的数据类型。有人知道吗

更新:在datanucleus appengine中
谷歌应用程序引擎的DataNucleus插件。

我猜你可能已经想到了这一点;但我还是要发布这篇文章,因为它增加了一个你的问题中没有提到的要点。我的解决方案是将其私有化,然后对于我的对象定义,我永远不会返回文本对象。我承认这并没有实现您避免应用程序引擎特定数据类型的目标;但它至少使您不必重写依赖于文本对象的一个类之外的代码,如果您决定将应用程序从应用程序引擎中移开

例如,假设text是blogPost变量

public class BlogPost {
  private Text post;

  // ...

  public String getPost() {
    return post.getValue();
  }

  public void setPost(String val) {
    this.post = new Text(val);
  }
}
如果代码感觉有点马虎,那么执行此操作可能会稍微高效一些(我不知道Text#getValue方法在内部是如何工作的)

public class BlogPost {
  private Text post;
  private String postValue;
  // ...

  public String getPost() {
    return postValue;
  }

  public void setPost(String val) {
    this.post = new Text(val);
    this.postValue = val;
  }
}

戴夫,谢谢你的回答。我已经在做了。进一步扩展,我可以用特定的实现实现BlogPost接口。不过,它会复制相当多的代码。为什么不在AppEngine插件上提出一个功能请求呢?实际实现起来很琐碎。关于您提出的解决方案-如果您不打算搜索任何字符串,那么为它们编制索引是没有意义的。这样做纯粹是在浪费资源。考虑到你对可移植性的担忧:实际上,如果你想利用AppEngine给你带来的好处,你必须编写特定于AppEngine的代码。我不想再担心这个了,只要试着确保你能很好地封装东西,这样以后就可以很容易地修改了。@NickJohnson我的意思是说文本是不可索引的,字符串(@DataNucleus,我明白了。@Lob,似乎是个不错的选择。它是什么意思“状态:已验证”?它是不是意味着已经实现并测试过了?谢谢