2013-01-19 84 views
0

有沒有辦法改變ORMlite定義數據庫的主鍵?ORMlite alter primary key

我在與

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

一類用戶,我用DAO.querybyid(String name);

查詢,但是當我嘗試在數據庫中更改名稱,它並沒有給我任何警告, ORMLite會更改表列並刪除索引,然後更新列並重新放置索引?

我不這麼認爲呢?因此需要一種解決方法:(也希望DAO.querybyid()優勢通過字符串來獲取用戶。

有人能幫助我嗎?

回答

1

將ORMLite修改表列,刪除索引,和然後更新列,再次放在索引

我假設你正在改變使用dao.rawExecute(...) methodORMLite沒有做任何事情神奇的這種說法您的架構 - ?它只是把它發送到底層數據庫所以如果。您要求的字段爲name,但它已更名爲t o是id,那麼DAO將不起作用,因爲它不對應於數據庫。它會執行一個"SELECT name, ... FROM ..."並得到一個SQL錯誤。

可以做的是有兩個不同版本的類。第一個是「舊」字段名稱,另一個是新名稱。然後,如果您檢測到需要更新架構,則可以發出原始ALTER SQL語句,然後開始使用與新版本的類相對應的DAO。

+0

我想我會重構我的模式,並作出一個獨特的ID和一個額外的功能,以處理我的查詢user.name ...這將是更少的工作,我猜:D – Fl0R1D3R

+0

聽起來正確@KyuuSung。您可以使用dao.queryForEq()來完成該操作。 – Gray