@Android Room数据库中的查询更新不';t更新主键字段

@Android Room数据库中的查询更新不';t更新主键字段,android,sql,sql-update,Android,Sql,Sql Update,我正在用Room数据库编写Android应用程序。我的数据库包含以下代码的GroupVc实体: @Entity public class GroupVc { @ColumnInfo(name = "language") private String language; @NonNull @PrimaryKey @ColumnInfo(name = "name_group") private String nameGroup; public GroupVc(String language

我正在用Room数据库编写Android应用程序。我的数据库包含以下代码的GroupVc实体:

@Entity
public class GroupVc {

@ColumnInfo(name = "language")
private String language;


@NonNull
@PrimaryKey
@ColumnInfo(name = "name_group")

private String nameGroup;

public GroupVc(String language, String nameGroup) {
    this.language = language;
    this.nameGroup = nameGroup;
}

public String getLanguage() {
    return language;
}

public void setLanguage(String language) {
    this.language = language;
}

@NonNull
public String getNameGroup() {
    return nameGroup;
}

@NonNull
public void setNameGroup(String nameGroup) {
    this.nameGroup = nameGroup;
}
}
正如您所看到的,我的entity类包含两列,其中nameGroup是我的PrimaryKey。在我的应用程序中,我想让用户看到组的完整列表,并通过输入新组的名称来更改组的名称。为了实现这样的功能,我创建了下一个DAO@Query方法:

@Dao
public interface GroupVcDao {
@Query("UPDATE groupvc SET name_group= :newName WHERE name_group= :currentName")
void updateNameOfGroup(String currentName, String newName);
}
在这个查询中,我想通过从RecyclerView(currentName参数)获取GroupVc的现有名称并从DialogFragment(newName参数)应用新名称来更改GroupVc的名称。 我的问题是这个查询没有任何效果,也没有更新名称。虽然我没有收到任何错误或异常。所以我需要知道:这样的查询正确吗?是否可以在主键同时是可变值和条件的情况下编写更新查询

这里是我在GitHub上的完整项目的链接

我不能确定,但我猜您的查询正在运行,但由于您正在更改主键,您的数据库中只剩下旧对象和新对象的实例。尝试检查对象是否同时具有旧名称组和新名称组。此外,如果您希望允许用户更改组名,将主键移动到UUID或其他不变的键可能会有意义。

您找到解决方案了吗?我也面临着同样的问题!你救了我的命!!谢谢加油!!!到处都在找这个。。就这样!谢谢