我过去使用AppEngine 1.7,JRE 1.6和其他Google帐户成功创建了多个端点。我的数据类非常接近教程示例。
使用新项目,我无法持久保存非常简单的bean,从API Explorer运行时收到以下错误。在本地运行和在AppEngine上运行时都会发生此错误。
500内部服务器错误{“错误”:{“message”: “javax.jdo.JDOFatalInternalException:传递给的键值 构造一个类型为“”的SingleFieldIdentity javax.jdo.identity.StringIdentity \“for class \”class com.jdub.minorplanets.MapSector \“是 空\ nNestedThrowables:\ norg.datanucleus.exceptions.NucleusException: 传递给构造SingleFieldIdentity类型的键值 类“类”的“类javax.jdo.identity.StringIdentity” com.jdub.minorplanets.MapSector \“is null。”,“code”:503,
“错误”:[{ “域名”:“全球”, “reason”:“backendError”, “message”:“javax.jdo.JDOFatalInternalException:传递给构造类型为\”的SingleFieldIdentity的键值 javax.jdo.identity.StringIdentity \“for class \”class com.jdub.minorplanets.MapSector \“是 空\ nNestedThrowables:\ norg.datanucleus.exceptions.NucleusException: 传递给构造SingleFieldIdentity类型的键值 类“类”的“类javax.jdo.identity.StringIdentity” com.jdub.minorplanets.MapSector \“为null。” }]}}
我的数据类非常简单,即使是最精简的版本也会出现错误:
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class MapSector {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String encodedKey;
@Persistent private String sectorID;
public MapSector(String sectorID) {
super();
this.sectorID = sectorID;
}
public MapSector() {
super();
}
public String getEncodedKey() {
return encodedKey;
}
/**
* @return the sectorID
*/
public String getSectorID() {
return sectorID;
}
/**
* @param sectorID the sectorID to set
*/
public void setSectorID(String sectorID) {
this.sectorID = sectorID;
}
}
使用Eclipse插件完全生成端点。
此时,我认为数据核增强器在该项目中没有正确启动。我看到的唯一区别是在新的Project和Java 1.7中使用了App Engine 1.8.2。虽然我也使用不同的谷歌帐户,但我不相信这是问题,因为我也收到了localhost上的错误。
以下是项目使用的库:
这让我疯了。我已经反复比较我的工作项目和示例代码,并没有看到问题。我也没有看到报告的类似错误。
我需要更改配置以使端点/ datanucleus / appengine代码正确设置标识?
我尝试过的其他事情:
答案 0 :(得分:0)