Java 只能使用Objectify在GAE数据存储中更新字段一次
我正在使用Objectify将图表类序列化为GAE数据存储。我可以根据需要多次更新(序列化)所有字段,整数arrowTypeId除外,它只更新一次,之后始终保持相同的值。如果我离开应用程序并再次运行,我可以再次更新该值,但只能更新一次 要更新arroyTypeId,我调用sendDatabaseUpdateDiagramArrows()。情况就是这样:Java 只能使用Objectify在GAE数据存储中更新字段一次,java,gwt,google-cloud-datastore,requestfactory,objectify,Java,Gwt,Google Cloud Datastore,Requestfactory,Objectify,我正在使用Objectify将图表类序列化为GAE数据存储。我可以根据需要多次更新(序列化)所有字段,整数arrowTypeId除外,它只更新一次,之后始终保持相同的值。如果我离开应用程序并再次运行,我可以再次更新该值,但只能更新一次 要更新arroyTypeId,我调用sendDatabaseUpdateDiagramArrows()。情况就是这样: 我使用值1调用SendDatabaseUpdateDiagramRows() 我将该值设置为DiagramProxy.setArrowTypeI
- 请注意,我可以第一次将ArrowTypeId值从默认值1更新为2。但是下一次总是保持值2
- 编辑:如果我将arrowTypeId更改为字符串,我也会遇到同样的问题
public static DiagramProxy sendDatabaseUpdateDiagramArrows(DialectiveRequestFactory requestFactory, Integer value, DiagramProxy cellDiagramProxy)
{
DiagramRequest diagramRequest = requestFactory.diagramRequest();
DiagramProxy newDiagramProxy = diagramRequest.edit(cellDiagramProxy);
Date date = new Date();
newDiagramProxy.setArrowTypeId(value);
newDiagramProxy.setTitle(Integer.toString(newDiagramProxy.getArrowTypeId()));
diagramRequest.save(newDiagramProxy).fire();
return cellDiagramProxy;
}
@Entity
public class Diagram extends DatastoreObject{
@Indexed private String diagramId;
private String title;
private Integer arrowTypeId;
public String get_id() {
return diagramId;
}
public void set_id(String diagramId) {
this.diagramId = diagramId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getArrowTypeId() {
return arrowTypeId;
}
public void setArrowTypeId(Integer arrowTypeId) {
this.arrowTypeId = arrowTypeId;
}
}
@ProxyFor(value = Diagram.class, locator = ObjectifyLocator.class)
public interface DiagramProxy extends EntityProxy{
void set_id(String id);
void setTitle(String title);
void setArrowTypeId(Integer arrowTypeId);
Integer getArrowTypeId();
String get_id();
String getTitle();
}
public class DiagramDao extends ObjectifyDao<Diagram>{
public void save(Diagram diagram)
{
this.put(diagram);
} }
Diagram.java
public static DiagramProxy sendDatabaseUpdateDiagramArrows(DialectiveRequestFactory requestFactory, Integer value, DiagramProxy cellDiagramProxy)
{
DiagramRequest diagramRequest = requestFactory.diagramRequest();
DiagramProxy newDiagramProxy = diagramRequest.edit(cellDiagramProxy);
Date date = new Date();
newDiagramProxy.setArrowTypeId(value);
newDiagramProxy.setTitle(Integer.toString(newDiagramProxy.getArrowTypeId()));
diagramRequest.save(newDiagramProxy).fire();
return cellDiagramProxy;
}
@Entity
public class Diagram extends DatastoreObject{
@Indexed private String diagramId;
private String title;
private Integer arrowTypeId;
public String get_id() {
return diagramId;
}
public void set_id(String diagramId) {
this.diagramId = diagramId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getArrowTypeId() {
return arrowTypeId;
}
public void setArrowTypeId(Integer arrowTypeId) {
this.arrowTypeId = arrowTypeId;
}
}
@ProxyFor(value = Diagram.class, locator = ObjectifyLocator.class)
public interface DiagramProxy extends EntityProxy{
void set_id(String id);
void setTitle(String title);
void setArrowTypeId(Integer arrowTypeId);
Integer getArrowTypeId();
String get_id();
String getTitle();
}
public class DiagramDao extends ObjectifyDao<Diagram>{
public void save(Diagram diagram)
{
this.put(diagram);
} }
DiagramProxy.java
public static DiagramProxy sendDatabaseUpdateDiagramArrows(DialectiveRequestFactory requestFactory, Integer value, DiagramProxy cellDiagramProxy)
{
DiagramRequest diagramRequest = requestFactory.diagramRequest();
DiagramProxy newDiagramProxy = diagramRequest.edit(cellDiagramProxy);
Date date = new Date();
newDiagramProxy.setArrowTypeId(value);
newDiagramProxy.setTitle(Integer.toString(newDiagramProxy.getArrowTypeId()));
diagramRequest.save(newDiagramProxy).fire();
return cellDiagramProxy;
}
@Entity
public class Diagram extends DatastoreObject{
@Indexed private String diagramId;
private String title;
private Integer arrowTypeId;
public String get_id() {
return diagramId;
}
public void set_id(String diagramId) {
this.diagramId = diagramId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getArrowTypeId() {
return arrowTypeId;
}
public void setArrowTypeId(Integer arrowTypeId) {
this.arrowTypeId = arrowTypeId;
}
}
@ProxyFor(value = Diagram.class, locator = ObjectifyLocator.class)
public interface DiagramProxy extends EntityProxy{
void set_id(String id);
void setTitle(String title);
void setArrowTypeId(Integer arrowTypeId);
Integer getArrowTypeId();
String get_id();
String getTitle();
}
public class DiagramDao extends ObjectifyDao<Diagram>{
public void save(Diagram diagram)
{
this.put(diagram);
} }
DiagramDao.java
public static DiagramProxy sendDatabaseUpdateDiagramArrows(DialectiveRequestFactory requestFactory, Integer value, DiagramProxy cellDiagramProxy)
{
DiagramRequest diagramRequest = requestFactory.diagramRequest();
DiagramProxy newDiagramProxy = diagramRequest.edit(cellDiagramProxy);
Date date = new Date();
newDiagramProxy.setArrowTypeId(value);
newDiagramProxy.setTitle(Integer.toString(newDiagramProxy.getArrowTypeId()));
diagramRequest.save(newDiagramProxy).fire();
return cellDiagramProxy;
}
@Entity
public class Diagram extends DatastoreObject{
@Indexed private String diagramId;
private String title;
private Integer arrowTypeId;
public String get_id() {
return diagramId;
}
public void set_id(String diagramId) {
this.diagramId = diagramId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getArrowTypeId() {
return arrowTypeId;
}
public void setArrowTypeId(Integer arrowTypeId) {
this.arrowTypeId = arrowTypeId;
}
}
@ProxyFor(value = Diagram.class, locator = ObjectifyLocator.class)
public interface DiagramProxy extends EntityProxy{
void set_id(String id);
void setTitle(String title);
void setArrowTypeId(Integer arrowTypeId);
Integer getArrowTypeId();
String get_id();
String getTitle();
}
public class DiagramDao extends ObjectifyDao<Diagram>{
public void save(Diagram diagram)
{
this.put(diagram);
} }
公共类DiagramDao扩展了ObjectifyDao{
公共作废保存(图表)
{
这个.放(图),;
} }
让我猜猜:)因为我没有GAE数据存储的经验
我不明白你为什么这么说
@Indexed private String diagramId;
但非标准名称的getter和setter:
public String get_id() {
return diagramId;
}
public void set_id(String diagramId) {
this.diagramId = diagramId;
}
我宁愿选择:
@Indexed private String diagramId;
public String getDiagramId() {
return diagramId;
}
public void setDiagramId(String diagramId) {
this.diagramId = diagramId;
}
还有一件事是,DiagramRequest
代码尚未发布,这可能有助于发现问题。让我猜猜:)因为我没有使用GAE数据存储的经验
我不明白你为什么这么说
@Indexed private String diagramId;
但非标准名称的getter和setter:
public String get_id() {
return diagramId;
}
public void set_id(String diagramId) {
this.diagramId = diagramId;
}
我宁愿选择:
@Indexed private String diagramId;
public String getDiagramId() {
return diagramId;
}
public void setDiagramId(String diagramId) {
this.diagramId = diagramId;
}
还有一件事是,
DiagramRequest
code尚未发布,这可能有助于发现问题。尝试删除@index
anotation并将@Id
放在diagramId
I已删除@index上,这不会造成任何影响(错误持续存在)。我无法添加'@Id',因为我正在扩展数据存储,其中有'@Id'Id和版本。因此,只需将diagramId视为一个普通字符串,而不是主键,但我正在使用它进行查询。尝试删除@Indexed
anotation并将@Id
放在diagramId
I removed@Indexed上,它不会产生任何影响(错误仍然存在)。我无法添加'@Id',因为我正在扩展数据存储,其中有'@Id'Id和版本。所以只要把diagramId看作一个普通的字符串,而不是主键,但我用它来进行查询。