1
我實施用戶類爲:GreenDAO TOONE關係不工作
@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應該是工作沒事,因爲我可以看到生成的userDAO的TABLE指令:
public final static Property Company = new Property(6, long.class, "company", false, "COMPANY");
在應用程序流程I期間創建一個用戶實例(不是數據庫)併爲其設置一個公司對象。
然後我打電話:
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);
}
}
爲了創建子實體,我該做些什麼?
編輯
OK我剛纔讀的關係不受ORM自動管理。我沒有看到使用lib赫赫有很多好處..