对于一个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;
当我使用organisationDao.createIfNotExists(组织)将组织模型添加到数据库时,一切都很好。它在组织和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完整?
答案 0 :(得分:0)
所以我不太确定你要做什么,所以我只会解释ORMLite对你的代码做了什么:
Organisation organisation = new Organisation();
organisation.setOrganisationGuid('same id');
organisation.setTelNr(new Telnr());
organisationDao.update(organisation);
这是更新标识为Organisation
的数据库中的"same id"
。我原本期望telNr_id
字段设置为0
而不是null
,因为Telnr
对象的ID很可能是0。
我希望更新组织表中的记录,包括Telnr表中的记录。
我不太明白这一点。 ORMLite正在更新telnr_id
字段的值,以对应Telnr
中的Organisation
对象。它不会做任何其他更改。 ORMLite认真对待“精简版”并且除非被要求,否则不会在封面上做任何魔术。
如果您还想更新telNr
字段,那么您也需要这样做:
organisationDao.update(organisation);
telnrDao.update(organisation.telNr);