Java GAE数据存储阵列初始化抛出:不支持FK阵列
我试图在实体类中保存一个数组对象,我想将其存储在GAE数据存储中。遗憾的是,当我试图初始化数组时,出现了一个异常 我得到这个错误: java.lang.UnsupportedOperationException:不支持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; ... @
@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
,并将其用作游戏
实体中的字段,因此它也不会单独存储。如果您需要单独使用,那么最好的方法是在您的游戏
实体中使用键
引用配置文件
。我想保存键值以供参考就足够了。好主意!非常感谢。