我使用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