我有 3 张 table :
@DatabaseTable(tableName="user")
public class TableUser implements Serializable{
@DatabaseField(dataType = DataType.SERIALIZABLE)
private LinkedList<TableProfile> profiles;
}
@DatabaseTable(tableName="profile")
public class TableProfile implements Serializable{
@DatabaseField(dataType = DataType.SERIALIZABLE)
private LinkedList<TableRevel> revelations;
}
@DatabaseTable(tableName="revel")
public class TableRevel implements Serializable{
private String our_profile_id;
@DatabaseField(canBeNull=false)
private String other_profile_id;
@DatabaseField(canBeNull=false)
private String info;
@DatabaseField(canBeNull=false)
}
我需要更新“revel”表中的文件,我从没有对象“user:{profile:...}”的 Json 中获得启示
我想我需要使用 QueryBuilder,如果可以的话请写出这个查询的简短示例。
最佳答案
我会强制列名称为静态名称,以便您可以对其进行搜索。像这样的事情:
@DatabaseTable(tableName="revel")
public class TableRevel implements Serializable{
public static final String PROFILE_ID = 'id';
@DatabaseField(canBeNull=false, columnName = PROFILE_ID)
private String our_profile_id;
@DatabaseField(canBeNull=false)
private String other_profile_id;
@DatabaseField(canBeNull=false)
private String info;
}
然后我会做这样的事情来进行更新:
public class foo extends OrmLiteSqliteOpenHelper {
...
public updateField(String jsonString) throws SQLException{
Dao<TableRevel, String> revelDAO = getDao(TableRevel.class);
QueryBuilder<TableRevel, String> queryBuilder = revelDAO.queryBuilder();
queryBuilder.where().eq(TableRevel.PROFILE_ID, getIdFromJson(jsonString) );
PreparedQuery<TableRevel> preparedQuery = queryBuilder.prepare();
TableRevel revelEntry = revelDAO.queryForFirst();
//update the entry here
...
revelDAO.update(revelEntry); //update the data
我编写了一个使用 OrmLite 的项目。执行大量 sql 操作的类的链接如下:https://github.com/kopysoft/Chronos/blob/development/ChronosApp/src/com/kopysoft/chronos/content/Chronos.java
希望这有帮助!
关于Android ormlite 更新序列化对象中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9741200/