带有客体化的Google数据存储区获取MyClass不是受支持的属性类型。例外

时间:2014-04-25 12:41:19

标签: java google-app-engine google-cloud-datastore objectify

我尝试存储一个由我自己使用objectify编写的类的对象。这个班是:

import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;

@Entity
public class Group {

    @Id
    private Long id;
    private String name;
    private List<UserBalance> userBalanceList;

    //getters and setters for all fields
}

UserBalance类是:

import org.joda.money.BigMoney;
import com.google.appengine.api.users.User;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;

@Entity
public class UserBalance {

    @Id
    private Long id;
    private User user;
    @com.sappenin.objectify.annotation.Money
    private BigMoney money;

    //getters and setters for all fields
}

现在我得到的是:

com.googlecode.objectify.SaveException: Error saving mypkg.Group@1325bad7: 
       userBalanceList: mypkg.UserBalance is not a supported property type.
    at com.googlecode.objectify.impl.Transmog.save(Transmog.java:105)
    at ........

我在objectify服务中注册了UserBalance类。我使用自己的OfyService类来注册它们,如下所述:https://code.google.com/p/objectify-appengine/wiki/BestPractices#Use_Your_Own_Service

对我来说,看起来我的Group类中的userBalanceList只是一个嵌入式实体,如下所述: https://code.google.com/p/objectify-appengine/wiki/Entities#Embedding_Entities

当我试图将UserBalance的对象单独存储(而不是作为Group的一部分)时,它可以工作。 当我从Group类中删除userBalanceList字段时,它也可以工作。

有什么不对?有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

您正尝试使用Objectify v4使用Objectify v5对象定义。确保你的类路径上有正确的Objectify jar。