我正在使用 Objectify 将 Diagram 类序列化为 GAE Datastore。我可以根据需要多次更新(序列化)所有字段,但整数 arrowTypeId 除外,它只更新一次,之后始终保持相同的值。如果我离开应用程序并再次运行它,我可以再次更新该值,但只能更新一次。
要更新 arroyTypeId,我正在调用 sendDatabaseUpdateDiagramArrows()。这就是发生的事情:
- 我用值 1 调用 sendDatabaseUpdateDiagramArrows()
- 我将该值设置为 DiagramProxy.setArrowTypeId()。
- 作为测试,我将图表标题更改为 DiagramProxy.getArrowTypeId()
- 我调用 save()
- 在 DAO save() 上,收到了错误的 ArrowTypeId 值(保留旧值),但令人惊讶的是,标题具有从步骤 3 存储的正确 ArrowTypeId)
更改与此问题有关。不显示任何异常。
- 请注意,我可以第一次更新 ArrowTypeId 值,从默认值 1 到 2。但下一次始终保持值 2。
- 编辑:如果我将 arrowTypeId 更改为字符串,我也会遇到同样的问题。
数据库实用程序.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;
}
图.java
@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;
}
}
DiagramProxy.java
@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();
}
DiagramDao.java
public class DiagramDao extends ObjectifyDao<Diagram>{
public void save(Diagram diagram)
{
this.put(diagram);
} }