我有CidVo类:
@Entity
public class CidVo implements Serializable {
private static final long serialVersionUID = 6128323407787450445L;
@NonNull
@PrimaryKey
private String idCid;
private String dsCid;
//private StatusType idStatus;
public CidVo() {
super();
}
public String getIdCid() {
return idCid;
}
public void setIdCid(String idCid) {
this.idCid = idCid;
}
public String getDsCid() {
return dsCid;
}
public void setDsCid(String dsCid) {
this.dsCid = dsCid;
}
/*public StatusType getIdStatus() {
return idStatus;
}
public void setIdStatus(StatusType idStatus) {
this.idStatus = idStatus;
} */
}
DAO课程:
@Dao
public interface CIDDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAllCID(ArrayList<CidVo>... cidVos);
}
我通过JSON获得了一个对象列表。我想将它保存在数据库中。 但是,我在尝试编译时遇到了这个返回错误:
错误:必须使用@Entity注释实体类 E:\ workspace_android_studio \ app_atendimento_branch_test \程序\ SRC \主\ java的\ BR \ COM \ sisteplan \程序\ atendimento \型号\ CIDDao.java 错误:(19,43)错误:参数的类型必须是注释的类 @Entity或它的集合/数组。
如何解决这个问题? 以下是postExecute:
@Override
protected void onPostExecute(AsyncTaskResult<Retorno> respAtestadoVo) {
super.onPostExecute(respAtestadoVo);
if (respAtestadoVo.getExceptionResult() == null) {
RetornoCid retornoCid = (RetornoCid) respAtestadoVo.getResult();
ArrayList<CidVo> cidVos = (ArrayList<CidVo>) retornoCid.getRetorno();
appDataBase.getCidDao().insertAllCID(cidVos);
Toast.makeText(context, "Sucesso", Toast.LENGTH_SHORT).show();
}
}
实例:
@Database(entities = {CidVo.class}, version = 1)
public abstract class AppDataBase extends RoomDatabase {
public abstract CIDDao getCidDao();
private static AppDataBase appDataBase;
public static AppDataBase getInstance(Context context){
if(null == appDataBase){
appDataBase = buildDataBaseInstance(context);
}
return appDataBase;
}
private static AppDataBase buildDataBaseInstance(Context context){
return Room.databaseBuilder(context,
AppDataBase.class,
"app_database")
.allowMainThreadQueries().build();
}
private void cleanUp(){
appDataBase = null;
}
}
答案 0 :(得分:0)
原因是这里的vararg符号void insertAllCID(ArrayList<CidVo>... cidVos);
您正在尝试插入数组列表数组。
所以,只需用
void insertAllCID(List<CidVo> cidVos);
此外,当您使用集合时,最好在实现上使用接口。所以,你可以改变这部分
RetornoCid retornoCid = (RetornoCid) respAtestadoVo.getResult();
ArrayList<CidVo> cidVos = (ArrayList<CidVo>) retornoCid.getRetorno();
到这个
RetornoCid retornoCid = (RetornoCid) respAtestadoVo.getResult();
List<CidVo> cidVos = new ArrayList(retornoCid.getRetorno());