0

有没有办法改变 ORMlite 定义的数据库的主键?

我有一个班级用户

@DatabaseField(columnName = NAME_FIELD_NAME, canBeNull = false, id = true)
private String name = "";

我用DAO.querybyid(String name);

但是当我尝试更改数据库中的名称时,它没有给我任何警告,ORMLite 会更改表列并删除索引,然后更新列并再次放置索引吗?

我不这么认为呵呵?所以需要一个解决方法:(但也希望 DAO.querybyid() 优势来通过字符串获取用户。

有人能帮我吗 ?

4

1 回答 1

1

ORMLite 会改变表列并删除索引,然后更新列并再次放置索引吗?

dao.rawExecute(...)我假设您正在使用该方法更改您的架构? ORMLite并没有对这个语句做任何神奇的事情——它只是将它发送到底层数据库。因此,如果您要求该字段name但已重命名为,id则 DAO 将无法工作,因为它与数据库不对应。它将执行"SELECT name, ... FROM ..."并得到一个 SQL 错误。

可以做的是有两个不同版本的类。第一个具有“旧”字段名称,新的具有“新”名称。然后如果检测到需要更新模式,就可以发出原始ALTERSQL 语句,然后开始使用与新版本类对应的 DAO。

于 2013-01-19T21:06:50.647 回答