gpt4 book ai didi

android - 查询 Room 中对象的类型转换列表

转载 作者:太空狗 更新时间:2023-10-29 14:38:06 25 4
gpt4 key购买 nike

我有一个如下所示的表格

@Entity
@JsonIgnoreProperties(ignoreUnknown = true)
public class Product
{
@PrimaryKey
@ColumnInfo(name = "ID")
@JsonProperty("ID")
public int id;

@ColumnInfo(name = "Name")
@JsonProperty("Name")
public String name;

@ColumnInfo(name = "Documents")
@JsonProperty("Documents")
@TypeConverters(DocumentConverter.class)
public List<Document> documents;
}

//...

@TypeConverters(DocumentConverter.class)
@JsonIgnoreProperties( ignoreUnknown = true )
@JsonTypeName("Documents")
public class Document
{
@JsonProperty("Name")
public String name;

@JsonProperty("URL")
public String url;
}

我可以通过这样做来根据产品名称检索产品

@Query("SELECT * FROM Product WHERE Name = :name")
List<Product> getProducts(String name);

然后我将能够从每个 Product 对象访问文档列表。但是,我也想只处理具有某些文档的产品。我可以通过上面的查询获取所有产品,然后手动过滤我想要的文档,但是当我只查找非常具体的文档时,这会变得非常痛苦。

是否也可以基于文档变量进行查询而不是单独的表?

有点像...

@Query("SELECT * FROM Product WHERE Name = :name AND Document.name = :documentName")
List<Product> getProducts(String name, String documentName);

谢谢。

最佳答案

您可以使用 LIKE sql 语句在包含已转换文档列表的 json 列中进行搜索。例子:假设我们有这样转换的文档以存储在 db 中:

{
name: "Title",
url: "Your_url"
}

所以您对列表中包含此类文档的产品的查询应该是这样的:

SELECT * FROM Product WHERE Name = :name AND Documents LIKE :documentLikeExpr

在哪里

String documentLikeExpr = "%name: \"Title\"%";

表达式中的%表示零个、一个或多个字符。

所以我们在这里做的唯一一件事是使用 SQL 语言功能在列中搜索部分字符串。

关于android - 查询 Room 中对象的类型转换列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52728677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com