2013-08-01 19 views
0

我正在使用OrmLite 4.46管理我的數據庫爲我的android應用程序。Android ormLite emptyString爲字符串defaultValue

,我有一個問題:

我有我的模型下面的代碼:

public class Item extends Model { 

     @DatabaseField(generatedId = true) 
     private long  id; 
     @DatabaseField(columnName = "item_name", defaultValue = "") 
     private String  name; 
     @DatabaseField(columnName = "item_count", defaultValue = "0") 
     private int   count; 

     public Item() { 
      super(); 
     } 
} 

,問題就在這裏:

@DatabaseField(columnName = "item_name", defaultValue = "") 
private String  name; 

當我創建一個新項目()沒有參數,我將它保存在數據庫中,通常在列item_name中它應該保存一個空字符串。

但是當我從數據庫中檢索該項目,我嘗試

ItemName字符串= item.getName()。修剪(),我得到一個NullPointerException

如此看來,該名稱爲空。

另外我在sqlite數據庫文件中檢查了上述模型創建的表,當我設置defaultValue=""列創建時沒有默認值。

有沒有人知道這個問題的任何解決方案?

回答

4

您可以在一流水平,如姓名字段初始化爲空字符串:

@DatabaseField(columnName = "item_name", defaultValue = "") 
private String name = ""; 

當你創建Item類的對象這將name字段初始化爲空字符串,並將其保存到數據庫中。

當您從數據庫檢索它時,名稱字段將爲空("")而不是null

+0

謝謝,它以更簡單的方式解決了我的問題,因爲我找到的解決方法是使defaultValue =「」,然後修剪字符串以查看它是否爲空。 – ManosProm

1

當我創建一個沒有參數的新Item()並將其保存在數據庫中時,通常在列item_name中應該保存一個空字符串。

儘管@ Rakesh的回答是正確的,但事實證明這是ORMLite中的一個錯誤。如果字段爲null,代碼應該在創建期間插入defaultValue。然而,有一個錯誤.equals("")正在阻止這一點。

我已經提交了following bug report並已將其固定在主幹中。它將在4.47。

+0

謝謝,我會暫時使用Rakesh解決方案。等待4.47 !! :) 謝謝你的時間。 – ManosProm