【问题标题】:ORMlite alter primary keyORMlite 改变主键
【发布时间】:2013-01-19 21:02:14
【问题描述】:

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

我有一个类用户

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

我用DAO.querybyid(String name);查询它

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

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

有人可以帮我吗?

【问题讨论】:

    标签: java database annotations dao ormlite


    【解决方案1】:

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

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

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

    【讨论】:

    • 我想我会重组我的架构并创建一个唯一的 id 并创建一个额外的函数来处理我对 user.name 的查询......我想这会少一些工作:D
    • 听起来不错@KyuuSung。您可以使用 dao.queryForEq() 来完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    相关资源
    最近更新 更多