0

对于一个 android 项目,我使用的是 ORMLite 4.45 版。我有一个带有 foreignAutoCreate 字段的组织模型。

组织模式:

@DatabaseTable
public class Organisation {

    @DatabaseField (id = true)
    private UUID organisationGuid;

    @DatabaseField(foreign=true, foreignAutoCreate = true, foreignAutoRefresh=true)
    private Telnr telNr;

Telnr 型号:

@DatabaseTable
public class Telnr {

    @DatabaseField(generatedId = true)
    private int telnrId;

    @DatabaseField
    private String number;

当我使用 organizationDao.createIfNotExists(organisation) 将组织模型添加到数据库时,一切都很好。它在组织和 telnr 表中创建一条新记录,并将生成的 telnr id 放入组织表中。

现在我创建一个具有相同组织 UUID 的新组织模型并执行更新

Organisation organisation = new Organisation();
organisation.setOrganisationGuid('same id');
organisation.setTelNr(new Telnr());
organisationDao.update(organisation);

我希望更新组织表中的记录,包括 Telnr 表中的记录。相反,组织记录被更新,但组织表中的 telnr id 变为null。有没有办法更新组织和 telnr 表并保持 id 不变?

4

1 回答 1

0

所以我不太确定你想做什么,所以我只解释一下ORMLite对你的代码做了什么:

Organisation organisation = new Organisation();
organisation.setOrganisationGuid('same id');
organisation.setTelNr(new Telnr());
organisationDao.update(organisation);

这是更新Organisation具有 id 的数据库中的"same id"。我本来希望该telNr_id字段设置为,0而不是null因为Telnr对象的 id 很可能是 0。

我希望更新组织表中的记录,包括 Telnr 表中的记录。

我不太明白这一点。ORMLite 正在更新字段的值以telnr_id对应. 它不做任何额外的改变。ORMLite 认真对待“Lite”,除非要求,否则不会在幕后做任何魔术。TelnrOrganisation

如果您还想更新该telNr字段,那么您也需要这样做:

organisationDao.update(organisation);
telnrDao.update(organisation.telNr);
于 2013-06-10T14:38:15.060 回答