Java ORMlite alter主键

Java ORMlite alter主键,java,database,annotations,dao,ormlite,Java,Database,Annotations,Dao,Ormlite,有没有办法更改ORMlite定义的数据库的主键 我有一个类用户 @DatabaseField(columnName = NAME_FIELD_NAME, canBeNull = false, id = true) private String name = ""; 我用DAO.querybydstring名称查询它 但是当我试图更改数据库中的名称时,它不会给我任何警告,ORMLite是否会更改表列并删除索引,然后更新列并再次放置索引 我不这么认为哈?因此需要一个解决方法:但也希望DAO.que

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

我有一个类用户

@DatabaseField(columnName = NAME_FIELD_NAME, canBeNull = false, id = true)
private String name = "";
我用DAO.querybydstring名称查询它

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

我不这么认为哈?因此需要一个解决方法:但也希望DAO.querybyid优势通过字符串获得用户

有人能帮我吗

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

我假设您正在使用?这个语句没有任何神奇之处——它只是将它发送到底层数据库。因此,如果您请求字段名,但它被重命名为id,那么DAO将无法工作,因为它与数据库不对应。它将做一个选择名称。。。从…起并获取一个SQL错误


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

我想我将重新构造架构,生成一个唯一的id,并生成一个额外的函数来处理我对user.name的查询。。。我想那将是更少的工作:DSounds right@KyuuSung。您可以使用dao.queryForEq来实现这一点。