У меня есть класс Пользователь, у которого есть Список заказов и подобные модели
@Entity
public class User implements Parcelable{
@PrimaryKey
@ColumnInfo(name = "_id" )
int id;
String email;
String password;
List<Order> orders;
public User(String email, String password) {
this.email = email;
this.password = password;
}
}
@Entity (tableName = "Order",foreignKeys = @ForeignKey(entity = User.class,parentColumns = "_id",childColumns = "user_id", onDelete = ForeignKey.CASCADE),
indices = {@Index(value = {"user_id"}, unique = true)})
public class Order implements Parcelable{
@PrimaryKey
@ColumnInfo(name = "order_id")
int id;
@ColumnInfo(name = "user_id")
int userId;
String orderName;
public Order(int id, int userId, String orderName) {
this.id = id;
this.userId = userId;
this.orderName = orderName;
}
}
Что касается структуры этой модели, что я должен сделать, чтобы создать метод в@Dao вызвал insertUser, который берет пользовательский объект со списком вложенных заказов и сохраняет их вместе, а также при получении данных от пользователя получает их с понравившимися заказами
@Dao
public abstract class DatabaseDao {
@Insert
public abstract void insertUser(User user);
@Query("SELECT * FROM User WHERE _id =:userId")
public abstract User getUser(int userId);
}
Чтобы использовать его следующим образом
public class MainActivity extends AppCompatActivity {
AppDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "database-name").build();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
User user = new User("Fady1", "123");
user.setId(1);
Order order1 = new Order(1,1,"Order1");
Order order2 = new Order(2,1,"Order2");
Order order3 = new Order(3,1,"Order3");
List<Order> orders = new ArrayList<>();
orders.add(order1);
orders.add(order2);
orders.add(order3);
user.setOrders(orders);
db.databaseDao().insertUser(user);
}
});
thread.start();
}
}