如何在另一个实体表列中插入主键值?

时间:2020-09-11 10:59:49

标签: android android-room database-relations

db_pic我试图使用此post插入一对多的关系记录,但是在将数据插入列表时,我总是得到0值,我搜索了很多链接,但找不到解决方案。 / p>

我道是

@Insert
public abstract void insertUser(Hold user);

@Insert
public abstract void insertPetList(List<ScanItem> pets);

@Query("SELECT * FROM Hold WHERE holdId =:id")
public abstract Hold getUser(int id);

@Query("SELECT * FROM ScanItem WHERE userId =:userId")
public abstract List<ScanItem> getPetList(int userId);

public void insertUserWithPet(Hold user) {
    List<ScanItem> pets = user.getScanItemList();
    for (int i = 0; i < pets.size(); i++) {
        pets.get(i).setUserId(user.getHoldId());
    }

    insertUser(user);
    insertPetList(pets);


}

public Hold getUserWithPets(int id) {
    Hold user = getUser(id);
    List<ScanItem> scanItemList = getPetList(id);
    user.setScanItemList(scanItemList);
    return user;
}[![database table][2]][2]

在上图中用户ID列中,我总是得到0值,如何将主键值插入用户ID列中。

我的实体是=

@Entity()
public class Hold implements Serializable {
@PrimaryKey(autoGenerate = true)
int holdId;
@ColumnInfo(name = "subTotal")
Float subTotal;
@ColumnInfo(name = "discount")
Float discount;
@ColumnInfo(name = "tax")
Float tax;
@ColumnInfo(name = "grandTotal")
Float grandTotal;
@Expose


@Ignore
private List<ScanItem> scanItemList = null;
}

Second Entity =

@Entity()
public class ScanItem implements Serializable {

@PrimaryKey(autoGenerate = true)
private int scanid;

@ColumnInfo(name = "userId")
public int userId;
}

0 个答案:

没有答案