我目前正在开发一个使用 Google App Engine 托管的网络服务的移动应用程序。
但是我遇到了一个问题。我只想在我的数据库表中添加一个字段。 App Engine 不使用经典的 SQL 语法,而是使用 GQL。所以我不能使用 ALTER TABLE 语句。我如何使用 GQL 执行此操作?我在网上寻找解决方案,但没有太多帮助。
public MyEntity() {
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Key idStation;
private String name;
private double longitude;
private double latitude;
private java.util.Date dateRefresh = new Date(); //the field i want to add in DB
所以,现在当我创建一个“MyEntity”对象时,它应该将“dateRefresh”字段添加到数据库中......我像这样创建我的对象:
MyEntity station = new MyEntity();
station.setName("test");
station.setLatitude(0);
station.setLongitude(0);
station.setDateRefresh(new Date("01/01/1980"));
DaoFactory.getStationDao().addStation(station);
添加站方法:
@Override
public MyEntity addStation(MyEntity station) {
EntityManager em = PersistenceManager.getEntityManagerFactory().createEntityManager();
try {
em.getTransaction().begin();
em.persist(station);
em.getTransaction().commit();
} finally {
if(em.getTransaction().isActive()) em.getTransaction().rollback();
em.close();
}
return station;
}
字段“dateRefresh”从未创建到我的数据库中...
有人可以帮助我吗?
提前致谢
最佳答案
只需向您的数据结构添加另一个字段,也许提供一个 default
子句,仅此而已。例如,如果您有一个 UserAccount
:
class UserAccount(db.Model):
user = db.UserProperty()
user_id = db.StringProperty()
您可以轻松添加:
class UserAccount(db.Model):
user = db.UserProperty()
user_id = db.StringProperty()
extra_info = db.IntegerProperty(default=0)
timezone = db.StringProperty(default="UTC")
然后就放手吧。
关于database - 将字段添加到 App Engine 托管的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13585143/