【问题标题】:Why can't I update a foreign field on my table?为什么我不能更新表上的外部字段?
【发布时间】:2015-09-26 04:46:56
【问题描述】:

我正在使用 Ormlite,并且我有一个具有外来字段的对象。

上述对象也有它的字段的getter 和setter。

public class Object {

   @DatabaseField(foreign = true)
   private Object2 foreignField;

   Object() {

   }

   public Object2 getForeignField(){ return foreignField; }

   public void setForeignField(Object2 foreignField){ 
       this.foreignField = foreignField; 
   }
}

所以我假设当我打电话时:

Object testObject;
Object2 testObject2;

testObject.setForeignField(testObject2);
getDao.update(testObject);

它会自动用新的foreignfield的id更新数据库中的testObject,但是我的表没有更新。

我做错了什么?

编辑: 通过阅读有关 Ormlite 的实际文档,update(Object) 方法不会更新任何外部对象或外部集合。

http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/dao/Dao.html#update(T)

NOTE: This will not save changes made to foreign objects or to foreign collections.

现在正因为如此,我该如何更新桌子上的外来对象?

【问题讨论】:

标签: android sqlite ormlite


【解决方案1】:

它会自动用新的foreignfield的id更新数据库中的testObject,但是我的表没有更新。

当然应该。

update(...) 调用不会将对象与数据库进行比较,因此将生成一条 SQL UPDATE 语句。你试过turning on ORMLite logging吗?

如果它使用与Object2 foreignField 相同的ID 更新Object,那么该ID 是否相同?当您调用testObject.setForeignField(testObject2) 时,testObject2 应该已经在Object2 表中创建。它需要有一个适当的id 字段,该字段存储在Object 表中。

如果您提供有关 id 字段值以及数据库在更新前后的内容的更多详细信息,我可能会提供更多帮助。

【讨论】:

    猜你喜欢
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多