Search code examples
androidactiveandroid

how to save all nested classes using ActiveAndroid?


I am use AciveAndroid library in my project. And i have a quation:

I have some classes

@Table(name = "Users")
public class User extends Model {

    @Expose
    @Column(name = "uuid")
    @SerializedName("uuid")
    private String uuid;

    @Expose
    @Column(name = "userInfo")
    @SerializedName("userInfo")
    private UserInfo userInfo;
...
    }

and

@Table(name = "UserInfos")
public class UserInfo extends Model {

    @Expose
    @Column(name = "user")
    @SerializedName("user")
    private User user;

    @Expose
    @Column(name = "email")
    @SerializedName("email")
    private String email;

    @Expose
    @Column(name = "firstName")
    @SerializedName("firstName")
    private String firstName;
...
}

and others classes.

if I want to save the object User i do so:

user.save();

And get an error. i do so:

userInfo.save();
user.save();

and all is well. but I have many classes that have a other classes. and I can not cause permanent method save(); each class field. I expect that when you call user.save(); saved all nested classes. how to do it?


Solution

  • @Table(name = "Users")
    public class User extends Model {
    
        @Expose
        @Column(name = "uuid")
        @SerializedName("uuid")
        private String uuid;
    
        @Expose
        @Column(name = "userInfo", onUpdate = ForeignKeyAction.CASCADE, onDelete = ForeignKeyAction.CASCADE)
        @SerializedName("userInfo")
        private UserInfo userInfo;
        ...
    }