我使用ormlite,我有一个带字段的db:

public static final String NAME = "name";
@DatabaseField (canBeNull = false, dataType = DataType.SERIALIZABLE, columnName = NAME)
private String[] name = new String[2];

我想得到所有名为[0]和名为[1]的元素都是“car”。我试图添加一个where子句,比如:
NAMEDB nameDB = null;
Dao<NAMEDB, Integer> daoName = this.getHelper().getDao(NAMEDB.class);
QueryBuilder<NAMEDB, Integer> queryName = daoName.queryBuilder();
Where<NAMEDB, Integer> where = queryName.where();
where.in(nameDb.NAME, "car");

但它不起作用,因为它是一个数组字符串。
我还有其他领域:
public static final String MARK = "mark";

@DatabaseField (canBeNull = false, foreign = true, index = true, columnName = MARK)
private String mark = null;

我可以做到:
whereArticulo.in(nameDB.MARK, "aaa");

我怎样才能解决我的问题?谢谢。

最佳答案

不幸的是ORMLite不支持查询SERIALIZABLE类型的字段。它将数组存储为序列化的byte[],因此不能使用IN查询来查询值,如:

where.in(nameDb.NAME, "car");

ormlite确实支持外部集合,但您必须使用另一个包含名称的类来设置它。请参阅包含示例代码的文档:
http://ormlite.com/docs/foreign-collection

10-08 14:55