【问题标题】:GreenDAO ToOne relationship not workingGreenDAO ToOne 关系不起作用
【发布时间】:2017-04-10 08:10:50
【问题描述】:

我将 User 类实现为:

@Entity
public class User implements Serializable {

    /** Serial version UID */
    static final long serialVersionUID = 200L;

    @Id
    /** The user system id */
    private long id;

    @Index(unique = true)
    /** The user login username*/
    private String username;

    /** The user first name */
    private String firstName;

    /** The user last name*/
    public String lastName;

    @ToOne
    @NotNull
    /** The company this user belongs*/
    private Company company;

   ...
}

和公司

@Entity
public class Company extends JsonModel implements Serializable {

    /** Serial version UID */
    static final long serialVersionUID = 100L;

    @Id
    /** The sqlite record id */
    private long id;


    @NotNull
    /** The company public name */
    private String name;

...

}

@ToOne 应该可以正常工作,因为我可以看到生成的带有 TABLE 指令的 UserDao:

public final static Property Company = new Property(6, long.class, "company", false, "COMPANY");

在应用流程中,我创建了一个用户实例(不是数据库)并为其设置了一个公司对象。

然后我打电话:

UserDao userDao = daoSession.getUserDao();
userDao.insert(user);

但是,我的应用未能指定 Company 不能为空。当我打开 UserDao 生成的类时,我看到 bindValues 在保存用户之前从不创建公司。

 @Override
    protected final void bindValues(DatabaseStatement stmt, User entity) {
        stmt.clearBindings();
        stmt.bindLong(1, entity.getDbId());
        stmt.bindLong(2, entity.getId());

        String username = entity.getUsername();
        if (username != null) {
            stmt.bindString(3, username);
        }

        String firstName = entity.getFirstName();
        if (firstName != null) {
            stmt.bindString(4, firstName);
        }

        String lastName = entity.getLastName();
        if (lastName != null) {
            stmt.bindString(5, lastName);
        }
    }

我必须做什么才能创建子实体?

编辑

好的,我刚刚读到关系不是由 ORM 自动管理的。我没有看到使用 lib hehe 的很多好处..

【问题讨论】:

    标签: android sqlite one-to-one greendao greendao-generator


    【解决方案1】:

    好的,我刚刚读到关系不是由 ORM 自动管理的。

    所以我应该在前面插入公司。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 2023-03-16
      • 2014-05-12
      • 2012-01-08
      • 2015-09-24
      • 2010-11-16
      • 1970-01-01
      相关资源
      最近更新 更多