Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine GAE/JPA/DataNucleus:尝试持久化实体时出现奇怪异常(IllegalArgumentException:字段外索引:-1)_Google App Engine_Jpa_Google Cloud Datastore_Datanucleus - Fatal编程技术网

Google app engine GAE/JPA/DataNucleus:尝试持久化实体时出现奇怪异常(IllegalArgumentException:字段外索引:-1)

Google app engine GAE/JPA/DataNucleus:尝试持久化实体时出现奇怪异常(IllegalArgumentException:字段外索引:-1),google-app-engine,jpa,google-cloud-datastore,datanucleus,Google App Engine,Jpa,Google Cloud Datastore,Datanucleus,在实体中添加此嵌入字段后,出现异常: @Entity public class Team extends DataObject { @Embedded private TeamEvolution teamEvolution = new TeamEvolution(); // NEW FIELD: @Embedded // @AttributeOverrides({ @AttributeOverride(name = "buffer", column =

在实体中添加此嵌入字段后,出现异常:

@Entity
public class Team extends DataObject
{
    @Embedded
    private TeamEvolution teamEvolution = new TeamEvolution();

    // NEW FIELD:
    @Embedded
    // @AttributeOverrides({ @AttributeOverride(name = "buffer", column = @Column) })
    // @Enumerated
    private ScoutBuffer scoutBuffer;
 ...
这家伙很简单:

@Embeddable
public class ScoutBuffer 
{
    private static final int BUFFER_SIZE = 150;

    @Basic
    private List<String> buffer;
   ... // from here on there are only methods...
我不认为有什么需要做的,但在合并实体之前,我必须使用
JDOHelper.makeDirty
,以便它感觉到我修改了
scoutBuffer

   team.getScoutBuffer().add(playerIds);
   JDOHelper.makeDirty(team, "scoutBuffer");
   em.merge(team);

正如您在代码中看到的,我尝试了所描述的解决方法,但没有成功。奇怪的是那是2009年的。。。顺便说一下,我正在使用GAE1.7.0。此外,我还尝试清理/重新增强数据模型。

如果是从2009年开始的,为什么不使用更新的版本呢?@NeilStockton链接指向2009年的一篇文章,但我使用的是GAE的最新版本,这很奇怪。
   team.getScoutBuffer().add(playerIds);
   JDOHelper.makeDirty(team, "scoutBuffer");
   em.merge(team);