标签: objectify

在GAE-J中寻找使用Objectify-appengine而不是JDO的观点

我在GAE的数据存储/ JDO学习曲线上慢慢地,有点痛苦地工作.最近我发现了一个名为Objectify的框架,它应该介于非常简单的Datastore本机API和复杂的JDO之间.我一直在阅读它,它确实看起来很有吸引力.

我想知道的是,如果有人对Objectify有很多经验......它有多成熟?有很多用户社区吗?它是否已准备好迎接繁重的黄金时段?可以放弃吗?

在这里或在网上似乎没有太多关于Objectify的讨论,这让我对委托我的项目感到紧张.

google-app-engine frameworks objectify google-cloud-datastore

26
推荐指数
2
解决办法
7246
查看次数

Python Lxml(objectify):检查标签是否存在

我需要检查xml文件中是否存在某个标记.

例如,我想查看此代码段中是否存在该标记:

 <main>
       <elem1/>
       <elem2>Hi</elem2>
       <elem3/>
       ...
 </main>
Run Code Online (Sandbox Code Playgroud)

目前,我正在使用一个带有错误检查的丑陋黑客,如下所示:

try:
   if root.elem1.tag:
      foo = elem1
except AttributeError:
   foo = "error finding elem1"
Run Code Online (Sandbox Code Playgroud)

如果无法找到节点,我也想自定义字符串(即"无法找到-tagname-").

我必须检查一长串变量,我不想重复代码100次.

有什么建议?

编辑:

以下是实际xml文件的片段:

<main>
 <asset name="Virtual Dvaered Unpresence">
  <virtual/>
  <presence>
   <faction>Dvaered</faction>
   <value>-1000.000000</value>
   <range>0</range>
  </presence>
 </asset>
 <asset name="Virtual Empire Small">
  <virtual/>
  <presence>
   <faction>Empire</faction>
   <value>100.000000</value>
   <range>2</range>
  </presence>
 </asset>
</main>
Run Code Online (Sandbox Code Playgroud)

我想检查标签是否存在,如果是,则获取内容.

编辑编辑:好的,我将结合两个答案,但我只能投一票.抱歉.

编辑3:关于XPath的相关问题:Python lxml(objectify):Xpath麻烦

python xml lxml objectify

19
推荐指数
3
解决办法
2万
查看次数

Objectify 5.1上下文未启动由于缺少ObjectifyFilter而导致错误

使用最新版本的Objectify(5.1),当我尝试访问ofy()方法时出现以下错误

你还没有开始Objectify上下文.你可能错过了ObjectifyFilter.如果未在http请求的上下文中运行,请参阅ObjectifyService.run()方法.

我从appengine Web应用程序运行它,相同的代码和配置在旧版本中运行良好

以下是我的配置,类似于objectify文档中提供的示例

web.xml中

<filter>
    <filter-name>ObjectifyFilter</filter-name>
    <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>ObjectifyFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

OfyService类

public class OfyService {

static {
    long start = System.currentTimeMillis();

    factory().register(User.class);

    log.info(" Entity Registration took : {} ms", (System.currentTimeMillis() - start));
}

public static Objectify ofy() {
    return ObjectifyService.ofy();
}

public static ObjectifyFactory factory() {
    return (ObjectifyFactory) ObjectifyService.factory();
}
}
Run Code Online (Sandbox Code Playgroud)

但我确实定义了ObjectifyFilter,任何想法为什么我得到这个错误?我该如何解决?

谢谢!

更新:

我已将objectify版本更新到v5.1.5,但仍未解决此问题的任何更新问题?

google-app-engine objectify

18
推荐指数
1
解决办法
3026
查看次数

您何时在Objectify中注册GAE课程?

所以这可能是一个愚蠢的问题,但你什么时候注册类:

ObjectifyService.register( User.class );
Run Code Online (Sandbox Code Playgroud)

目前,我在类似接口的类的构造函数中这样做,我在其他类中使用它来简化数据存储的使用,特别是我的应用程序.但是,我收到此错误:

尝试两次注册"用户"

所以,我想我的问题是你在Objectify中注册课程的频率和具体时间是多少?

谢谢!

PS这是我的全班:

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Iterator;

import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.persistence.Id;

import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyService;
import com.googlecode.objectify.annotation.Indexed;
import com.googlecode.objectify.annotation.Unindexed;

public class UsersService {

    Objectify ojy;

    public UsersService(){
        ObjectifyService.register( User.class );
        ojy = ObjectifyService.begin();
    }

    public void regUser(String email, String password, String firstName, String lastName){
        //TODO: Check syntax if email
        //TODO: store encrypted password
    }

    public void regUser(String email, String password, String firstName){
        regUser(email, password, firstName, null);
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java google-app-engine objectify

16
推荐指数
1
解决办法
8288
查看次数

使用云端点进行客观化

我正在使用appengine云端点和客观化.我之前已经部署了这些端点,现在我正在更新它们,它不能与Objectify一起使用.我已经搬到了新机器并运行最新的appengine 1.8.6.尝试将objectify放在classpath中并且不起作用.我知道这可以工作,我错过了什么?

运行endpoints.sh时:

Error: Parameterized type
   com.googlecode.objectify.Key<MyClass> not supported.
Run Code Online (Sandbox Code Playgroud)

更新:我回到我的旧计算机并在同一端点上运行endpoints.sh并且工作正常.旧机器有1.8.3.我正在使用客观化3.1.

更新2:将我的旧机器更新为1.8.6并获得与其他机器相同的错误.留下2种可能性:1)端点不再支持客观化3.1 2)端点在最新版本中存在错误

最有可能#1 ...我一直想要更新到4.0 ...

google-app-engine objectify google-cloud-endpoints

16
推荐指数
2
解决办法
3380
查看次数

如何在Objectify中对答案进行排序?

我目前正在使用Objectify 3.1构建一个部署到GAE的应用程序.尝试使用order()子句进行查询时,我得到了奇怪的结果.

我的域名:


public class InvoiceLineItem
{
    private int units;

    private BigDecimal unitCost;
    private BigDecimal extendedCost;

    private String description;

    @Parent Key<Invoice> invoice;
}
Run Code Online (Sandbox Code Playgroud)

我试图使用以下内容收集与给定发票关联的所有InvoiceLineItem:

ofy ().query (InvoiceLineItem.class).ancestor (invoiceKey).list ( );
Run Code Online (Sandbox Code Playgroud)

在我的测试用例中,这很好用,按预期返回2行.

但是,当我尝试向上述查询添加排序顺序时,如下所示:

ofy ().query (InvoiceLineItem.class).ancestor (invoiceKey).order ("+description").list ();
Run Code Online (Sandbox Code Playgroud)

我总是得到0结果.我已经尝试改变顺序方向,它的排序字段,查询中order()子句的位置,都没有效果.任何人都能看到我在这里做错的事吗?

谢谢...

google-app-engine objectify google-cloud-datastore

13
推荐指数
1
解决办法
7780
查看次数

为什么Objectify而不是JDO?

我正在接近Gwt + Gae世界.

我的基本需求是通过Gwt-Rpc发送我的实体类,而不是将它们复制到DTO中.

Objectify承诺很好地做到这一点.它声称它将隐藏所有"Jdo复杂性".

我从未使用过Jpa或Jdo技术. 所有的复杂性在哪里?

我的意思是,你能否提供一些关于JDO中复杂任务的简单例子,Objectify琐碎了吗?

也许关系?

google-app-engine jdo objectify

12
推荐指数
1
解决办法
2743
查看次数

Objectify查询按列表过滤?

是否可以使用列表进行Objectify查询并获取与列表匹配的所有对象的列表?例如

List<String> vinNumberList;
Query<CarObject> q=ofy.query(CarObject.class).filter("vin",vinNumberList);
Run Code Online (Sandbox Code Playgroud)

google-app-engine objectify google-cloud-datastore

12
推荐指数
1
解决办法
5227
查看次数

使用App Engine存储的字符串的最大长度?

String使用App Engine 存储字段时:

  • App Engine数据存储可以处理的最大值length()String多少?
  • 另外,如果使用Objectify,这个最大长度是相同的还是Objectify会做一些影响这个最大长度的处理?

java google-app-engine objectify

12
推荐指数
2
解决办法
3609
查看次数

如何在JUnit中解决"你还没有开始一个Objectify上下文"?

我在JUnit中运行了一些Objectify测试代码,我收到了这个错误:

java.lang.IllegalStateException: You have not started an Objectify context. You are probably missing the ObjectifyFilter. If you are not running in the context of an http request, see the ObjectifyService.run() method.
    at com.googlecode.objectify.ObjectifyService.ofy(ObjectifyService.java:44)
    at com.googlecode.objectify.impl.ref.LiveRef.<init>(LiveRef.java:31)
    at com.googlecode.objectify.Ref.create(Ref.java:26)
    at com.googlecode.objectify.Ref.create(Ref.java:32)
    at com.netbase.followerdownloader.repository.DownloadTaskRepositoryImpl.create(DownloadTaskRepositoryImpl.java:35)
    at com.netbase.followerdownloader.repository.DownloadTaskRepositoryImplTest.setUp(DownloadTaskRepositoryImplTest.java:45)
Run Code Online (Sandbox Code Playgroud)

如何为测试代码解决此问题?

google-app-engine objectify google-cloud-datastore

11
推荐指数
2
解决办法
5663
查看次数