GAE数据存储阵列初始化throw:不支持FK阵列

时间:2012-10-30 17:02:02

标签: java arrays google-app-engine datastore

我正在尝试将数组对象保存在实体类中,我想将其存储在GAE数据存储区中。可悲的是,我正在尝试初始化阵列时遇到异常。

我收到此错误:

  

java.lang.UnsupportedOperationException:不支持FK数组。

我的班级看起来像这样:

@Entity
public class Game {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Key key;
    ...
    @Persistent
    private Profile[] players = new Profile[4];
    ...
    public void setPlayers(Profile player) {
        if (pcount.intValue() < 4) {
            this.players[pcount] = player; //Here I get the exception
            pcount = Integer.valueOf(pcount.intValue() + 1);
        }
    }
}

Profile也是一个实体类。

出了什么问题?我怎么能解决这个问题。如果有人可以向我解释,那会很有意思!

1 个答案:

答案 0 :(得分:0)

您需要将Profile实体注释为@Embeddable,并在Game实体中注释players字段为@Embedded。有关JPA注释的详细信息,请查看JPA 2 Annotations。这样,所有Profile文件都将显示为Game实体的内嵌字段。如果您只想保留Game实体与Profile实体的引用,则可以使用Key而不是Profile的数组。例如,

private Key[] players = new Key[4];

希望这有帮助。