Android GreenDAO ToOne关系不起作用
我正在实现一个用户类,如下所示:Android GreenDAO ToOne关系不起作用,android,sqlite,one-to-one,greendao,greendao-generator,Android,Sqlite,One To One,Greendao,Greendao Generator,我正在实现一个用户类,如下所示: @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
@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");
在应用程序流程中,我创建了一个用户实例(不是db),并为其设置了一个公司对象
然后我叫:
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不会自动管理关系 所以我应该先插入公司