Java Objectify 4-字段不会持久化

Java Objectify 4-字段不会持久化,java,persistence,google-cloud-datastore,field,objectify,Java,Persistence,Google Cloud Datastore,Field,Objectify,使用Objectify 4,保存MenuItem对象时不会保留名称和价格字段。 调试数据存储中只保留Key、WriteOps和ID/Name @Entity public class MenuItem extends BaseEntity { private String name; private double price; public MenuItem() { } public MenuItem(String name, double price) { this.name =

使用Objectify 4,保存MenuItem对象时不会保留名称和价格字段。 调试数据存储中只保留Key、WriteOps和ID/Name

@Entity
public class MenuItem extends BaseEntity {
private String name;
private double price;

public MenuItem() {
}

public MenuItem(String name, double price) {
    this.name = name;
    this.price = price;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public double getPrice() {
    return price;
}

public void setPrice(double price) {
    this.price = price;
}
}
其中,BaseEntity是:

public abstract class BaseEntity implements Dto {
private static final long serialVersionUID = 8400346403708831769L;

@Id
protected Long id;

protected BaseEntity() {
}

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((id == null) ? 0 : id.hashCode());
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }

    if (obj == null) {
        return false;
    }

    if (getClass() != obj.getClass()) {
        return false;
    }

    BaseEntity other = (BaseEntity) obj;

    if (id == null) {
        if (other.id != null) {
            return false;
        }
    } else if (!id.equals(other.id)) {
        return false;
    }

    return true;
}

public Long getId() {
    return id;
}

public void setId(@Nullable Long id) {
    this.id = id;
}

public boolean isSaved() {
    return (id != null);
}
}
而Dto是:

public interface Dto extends Serializable {
}

有什么想法吗?谢谢

如Objectify邮件列表中所述,可能只是您查看的数据存储缺少此信息

您是否可以显示一些测试代码来保存这些数据,然后检索并打印出结果,而不是使用数据存储查看器?我希望:

MenuItem-toSave=新的MenuItem(“测试”,6.3);
toSave.setId(1);
ofy().save().entity(toSave.now();
ofy().clear()//确保我们不仅仅关注当前会话。
MenuItem loaded=ofy().load().type(MenuItem.class).id(1.get();
assertEquals(loaded.getName(),“test”);
assertEquals(loaded.getPrice(),6.3);

谢谢!它帮助我了解到我的字段实际上是持久化的,但由于字段上没有@Index注释,因此没有显示在数据存储查看器中。