gpt4 book ai didi

android - GreenDAO ToOne 关系不起作用

转载 作者:太空狗 更新时间:2023-10-29 14:43:46 25 4
gpt4 key购买 nike

我正在实现一个 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);

但是我的应用未能指定公司不能为空。当我打开 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 有很多好处..

最佳答案

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

所以我应该先插入公司。

关于android - GreenDAO ToOne 关系不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43317901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com