Java GAE数据存储阵列初始化抛出:不支持FK阵列

Java GAE数据存储阵列初始化抛出:不支持FK阵列,java,arrays,google-app-engine,datastore,Java,Arrays,Google App Engine,Datastore,我试图在实体类中保存一个数组对象,我想将其存储在GAE数据存储中。遗憾的是,当我试图初始化数组时,出现了一个异常 我得到这个错误: java.lang.UnsupportedOperationException:不支持FK数组 我的班级是这样的: @Entity public class Game { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Key key; ... @

我试图在实体类中保存一个数组对象,我想将其存储在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);
        }
    }
}
@实体
公开课游戏{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私钥;
...
@持久的
私人档案[]玩家=新档案[4];
...
公共播放器(个人资料播放器){
if(pcount.intValue()<4){
this.players[pcount]=player;//这里我得到了一个异常
pcount=Integer.valueOf(pcount.intValue()+1);
}
}
}
Profile
也是一个实体类


出了什么问题?我怎样才能解决这个问题。如果有人能给我解释一下就太好了

您需要将您的
档案
实体注释为
@Embedded
,并在
游戏
实体中将
玩家
字段注释为
@Embedded
。有关JPA注释的详细信息,请参阅。这样,所有的
档案
文件将显示为
游戏
实体的内联字段。如果您只想保留从
游戏
实体到
配置文件
实体的引用,可以使用
数组,而不是
配置文件
。比如说,

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

希望这有帮助。

如果
配置文件
@可嵌入的
它也可以是一个实体吗?类似于:
@Entity@embeddeble public class…
?您的确切意思是什么?如果它可以是存储在数据存储中的单独实体,也可以是嵌入在
游戏
实体中的值?是的,完全正确。谢谢你的重播,我不这么认为。由于您将实体注释为
@embeddeble
,并将其用作
游戏
实体中的字段,因此它也不会单独存储。如果您需要单独使用,那么最好的方法是在您的
游戏
实体中使用
引用
配置文件
。我想保存键值以供参考就足够了。好主意!非常感谢。