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

room错误:查询返回的列没有字段fieldname

那绪
2023-03-14

下面是一个POJO示例

public class Product{
  private long id;
  private String name;
  private double price;

 ... constructor for all fields
 ... getters and setters
}

现在,在我的productDAO中,如果我有一个像这样的查询

@Query(select id, name from products)
LiveData<List<Product>> getProducts()

我会得到这样一个错误:

查询返回的列在...Product中没有字段[price],即使它们被注释为非空或原语。查询返回的列:[id,Name]

a)如果我进入我的产品并设置

@Nullable
private double price;

错误仍然存在。

b)如果我进入我的产品和设置

@Ignore
private double price;

错误会消失,但如果我有另一个查询,例如

 @Query(select p.id, p.name, p.price, t.someField from products p inner join table t)
    LiveData<List<Product>> getJoinQueryResponse()

因为设置了@ignore,所以价格返回为0.0。

那么如何解决这一点呢?希望我不需要为每个房间的不同响应做POJO...

共有1个答案

屈畅
2023-03-14

默认情况下,基元类型不为NULL。使价格加倍,这将解决问题,因为它将是空的。此外,您可以添加一个自定义getter以避免将price作为空对象。

public double getPrice(){
    if(this.price == null) return 0.0;
    return this.price;
}

@Ingore告诉Room完全忽略字段,这不是你想要的,基于你的回答。

 类似资料:
  • 我保留了一份按“顺序”排列的产品清单。当我试着从房间里拿一份产品清单的时候。我得到以下错误。但我做了一个TypeConvertor。会有什么错误呢? 订单 产品 命令道 转换器 错误 java:53:错误:查询返回的列在com.vepe.navigation.model.entity.product中没有字段[id,orderId,name,pathImage,price,priceDiscoun

  • 我正在实现房间数据库。这是我的POJO类 这是DAO类 在运行我的代码时,我收到以下错误

  • 问题内容: 当我尝试运行以下查询时出现错误: 是什么导致此错误? 问题答案: 将一个返回多列的子查询放在列表中,然后从中选择。 首先,相关子查询将是一个坏主意。但是,您的查询甚至没有关联,但是 没有关联 (没有链接到外部查询),并且似乎返回了多行。这导致产生笛卡尔积的(可能非常昂贵且荒谬的)交叉连接,可能不是您的(秘密)意图。 看起来您确实想要: 两者也都是毫无意义的。WHERE条件将一个强制为a

  • 我正在努力学习GraphQL( 我只得到一级字段,比如: 以下是我的模式: 我的解析器: 知道我做错了什么吗?

  • 问题内容: 以下代码似乎不起作用,即使该文件看起来很好也是如此。 在此先感谢您的帮助。 编辑:结果是我试图去Graphics.drawImage(images [0]);,它给了我一个空指针异常。这段代码可以很好地完成。 编辑:更改按建议移动if(!file.exists()),并将文件包装在输入流中。 问题答案: ImageIO.read(file); 如果找不到注册的 ImageReader,

  • 问题内容: 如何获取使用SQL Server的SQL查询返回的列数? 例如,如果我有如下查询: 它应该返回表A1中的总列数+表A2中的总列数。但是查询可能会更复杂。 问题答案: 这是一种方法: 您可以通过创建视图来执行类似的操作。