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

更新android Room中某个实体的特定字段

傅博容
2023-03-14

我正在为我的新项目使用android room持久性库。我想更新表的某些字段。我在我的DAO中尝试过-

// Method 1:

@Dao
public interface TourDao {
    @Update
    int updateTour(Tour tour);
}

但是,当我尝试使用此方法进行更新时,它会更新实体的每个字段,在这些字段中,它与tour对象的主键值相匹配。我已使用@query

// Method 2:

@Query("UPDATE Tour SET endAddress = :end_address WHERE id = :tid")
int updateTour(long tid, String end_address);

它正在工作,但在我的情况下会有很多查询,因为我的实体中有很多字段。我想知道如何更新某些字段(不是全部),如method 1,id=1;(id是自动生成主键)。

// Entity:

@Entity
public class Tour {
    @PrimaryKey(autoGenerate = true)
    public long id;
    private String startAddress;
    private String endAddress;
    //constructor, getter and setter
}

共有1个答案

太叔昊苍
2023-03-14

我想知道如何像方法1那样更新某些字段(不是全部),其中id=1

使用@query,就像在方法2中所做的那样。

在我的例子中,查询太长,因为我的实体中有许多字段

然后有更小的实体。或者,不单独更新字段,而是与数据库进行更粗粒度的交互。

<罢工> 房间里没有什么东西能满足你的要求。

更新2020-09-15:Room现在有部分实体支持,可以帮助解决这个场景。请参阅此答案了解更多信息。

 类似资料:
  • 以下是我要保存(创建/更新)的实体模型: 有两种方法可以更新此实体: < li >第一个更新除< code>notified属性以外的所有属性的人 < li >第二个更新< code>notified属性的仅 有没有办法告诉Hibernate忽略某个特定方法的某些字段?我需要创建两个不同的特定dao方法吗?我是否需要为经典的< code>save方法保留< code>updatable=false

  • 问题内容: 是否有更新的方式只有一些领域使用该方法的实体对象从春数据JPA? 例如,我有一个这样的JPA实体: 通过其CRUD存储库: 在Spring MVC中,我有一个控制器,该控制器获取用于更新它的对象: 我知道我可以使用来加载用户findOne,然后更改其名称并使用save…来更新它。但是,如果我有100个字段,而我想更新其中的50个字段,则更改每个值可能会很烦人。 有没有办法告诉类似“ 保

  • 有没有办法使用Spring Data JPA中的方法只更新实体对象的某些字段? 我知道我可以使用加载用户,然后更改其名称并使用更新它...但是,如果我有100个字段,我想更新其中的50个,这可能是非常恼人的更改每个值… 难道没有办法告诉像“保存对象时跳过所有空值”这样的事情吗?

  • 当我尝试更新一个实体的一个字段时,我是新来的,我注意到在日志中Hibernate执行两个查询,在更新之前,它会对所有字段进行SELECT。可以吗?为什么Hibernate执行SELECT?我如何用一个UPDATE查询更新一个字段?此外,当我试图更新一个实体中的单个标题时,它有另一个嵌套实体,我最终得到了一堆SELECT。我认为这对性能不好,或者我错了? 在互联网上,我找到了使用 @Modifyin

  • 我有一个User类,它有一些附加属性: 现在,如果我调用一些方法来改变其中一个房子(例如改变它的名称属性),如果我调用,我仍然会得到房子的旧值: 我如何确保它总是更新?

  • 我使用的是spring data jpa,我有一个实体,代码如下: 我使用org . spring framework . data . JPA . repository . JPA repository进行相关的CRUD操作。 当我第一次保存实体(例如creationTimestamp=1)时,方法保存(实体)返回保存的实体(如javadoc所说),其中包含用于进一步操作的新id(如javado