ORMlite改变主键

时间:2013-01-19 21:02:14

标签: java database annotations dao ormlite

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

我正在使用

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

我用DAO.querybyid(String name);

查询

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

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

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

  

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

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

可以做的是有两个不同版本的课程。第一个使用“旧”字段名称,新名称使用“新”名称。然后,如果您检测到需要更新架构,则可以发出原始ALTER SQL语句,然后开始使用与该类的新版本对应的DAO。