当前位置: 首页 > 知识库问答 >
问题:

如何从DAO获取On冲突策略返回值

淳于开畅
2023-03-14

我正在使用Room持久性库。操作按预期进行。但如何从调用方法的DAO中获取onConflict值呢。我得到以下错误

error: Not sure how to handle the insert method's return type.

在我将返回类型从整数更改为long之后更新,我得到了这个错误

Not sure how to handle update method's return type. Currently the supported return types are void, int or Int.

在道。JAVA

@Dao
public interface UserDao {

    @Insert(onConflict = OnConflictStrategy.ABORT)
    long insert(UserEntity userEntity);

    @Update(onConflict = OnConflictStrategy.IGNORE)
    long update(UserEntity userEntity);
}

在缅因州ctivity.java

@Override
protected Void doInBackground(UserEntity... userEntities) {
    long result = userDao.insert(userEntities[0]);
    if(result == OnConflictStrategy.ABORT){
        result = userDao.update(userEntities[0]);

    }
    return null;
}

共有2个答案

韩弘壮
2023-03-14

插入如果@插入方法只接收到1个参数,它可以返回一个long,这是插入项的新rowId。如果参数是数组或集合,则应返回long[]或List。

更新虽然通常不需要,但可以让此方法返回一个int值,指示数据库中更新的行数。

在多次阅读后,我明白了方法是返回记录数而不是错误代码。无论如何,我关于如何阅读或使用On冲突策略值的问题仍然没有答案

荆煌
2023-03-14

冲突策略的情况下。中止Room将抛出一个SQLiteConstraintException。您可以抓住它以适合您的用例。

您得到的编译错误是因为@Insert操作只能返回longlong[]void<代码>整数不起作用。

@Update返回查询更新的行数。此方法将返回一个intvoid。文件:https://www.sqlite.org/lang_update.html

 类似资料:
  • 在我的页面上,我给出了层次结构: 内部框架带有给定的标题 看起来一切都是正确的,但我在chrome中遇到了这样的错误(ff中也有错误): 拒绝展示https://app.domain.training/path'在帧中,因为祖先违反以下内容安全策略指令:“帧祖先app.domain.training proxy.domain.training domain.training*.domain.tra

  • 我是Spring启动的新手,我使用Spring启动实现了一些基本的REST api。当我尝试使用反应调用这些api时,我在调用一些CORS策略时出现错误。然后我找到了解决这个问题的方法,除了登录api调用之外,我所有的api终端都正常工作。我在调用时遇到了同样的错误: 这是我的Web安全java类。 这是我的示例控制器类。 我被这个问题困住了,我真的需要一些帮助。我尝试了stackoverflow

  • 我在DAO文件中返回查询时遇到问题。我想在MainActivity中存储一个变量,用于插入的最后一个ID: 在DAO中,我有以下查询: 我认为查询的返回类型或者我读取返回类型的方式有问题。有人能帮帮我吗?事先谢谢你 一小步 使用LiveData,我实际上可以看到我插入的任务ID是什么,但我不能在onChange方法之外使用它。我需要这个id,因为我想创建一个id==到任务id的通知。我该怎么做呢?

  • 考虑这个代码 我做了一个包装器来延迟的方法调用是否有办法从setTimeout内部的回调中检索值,即从?

  • 问题内容: 我想使用函数在ajax调用中获取值。但是该值始终返回未定义状态。返回值仅为1或0。 这是我的代码: 大家好,仍在努力完成这项工作。我现在得到的值显示为1或0。我现在想要完成的是如何在if语句中实现它。我想吃点这样的东西。如果val=0,则返回true;否则,返回true。否则返回假。我不确定我是否在使用ajax函数的正确轨道上。但是,如果有更好的方法可以告诉我,我将不胜感激。 问题答案

  • 问题内容: 下面的函数返回一个字符串。我如何获取从线程目标返回的值? 上面显示的“一种显而易见的方法”不起作用:。 问题答案: 我见过的一种方法是将可变对象(例如列表或字典)与索引或某种其他标识符一起传递给线程的构造函数。然后,线程可以将其结果存储在该对象的专用插槽中。例如: 如果你确实想join()返回被调用函数的返回值,则可以使用如下所示的Thread子类来实现: 由于名称修改,这有点麻烦,并