如何使用安卓房间自动插入链接实体?



>我有一个类用户,他有一个订单列表和这样的模型

@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();
}
}

要实现这一点,你必须使用 TypeConverters。 您可以在谷歌上搜索,了解它是如何完成的。 以下是 GitHub 上示例应用程序的链接: 主班 : https://github.com/medyas/Baking-App/blob/master/app/src/main/java/ml/medyas/bakingapp/Classes/RecipeClass.java

列表类 : https://github.com/medyas/Baking-App/blob/master/app/src/main/java/ml/medyas/bakingapp/Classes/StepsClass.java

转换器类别 : https://github.com/medyas/Baking-App/blob/master/app/src/main/java/ml/medyas/bakingapp/Classes/StepsConverterClass.java

最新更新