2016-05-19 22 views
1

私はAndroids統合sqliteデータベースでORMLiteを使用していますが、CURRENT_TIMESTAMPをフィールドのデフォルト値として使用しようとしています。
私が試した:ORMLiteとSQLiteでフィールドのデフォルト値としてCURRENT_TIMESTAMPを使用

# --table-start-- 
dataClass=com.test.ormlite.TableOne 
tableName=tableone 
# --table-fields-start-- 
# --field-start-- 
fieldName=id 
columnName=id 
generatedId=true 
# --field-end-- 
# --field-start-- 
fieldName=created 
columnName=created 
defaultValue=CURRENT_TIMESTAMP 
# --field-end-- 
# --table-fields-end-- 
# --table-end-- 
################################# 

が、私は、次のスタックトレースと、SQLExceptionを得た:

@DatabaseTable(tableName = "tableone") 
public class TableOne { 

    @DatabaseField(generatedId = true, columnName = "id") 
    private int id; 

    @DatabaseField(columnName = "created", defaultValue = "CURRENT_TIMESTAMP") 
    private java.util.Date created; 

    public TableOne() { 

    } 
} 

ormlite_config.txt生成し、私も設定しようとした

W/System.err: java.sql.SQLException: Problems with field FieldType:name=created,class=TableOne parsing default date-string 'CURRENT_TIMESTAMP' using 'yyyy-MM-dd HH:mm:ss.SSSSSS' 
    at com.j256.ormlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:22) 
    at com.j256.ormlite.field.types.DateStringType.parseDefaultString(DateStringType.java:46) 
    at com.j256.ormlite.field.FieldType.assignDataType(FieldType.java:1067) 
    at com.j256.ormlite.field.FieldType.<init>(FieldType.java:274) 
    at com.j256.ormlite.table.DatabaseTableConfig.convertFieldConfigs(DatabaseTableConfig.java:236) 
    at com.j256.ormlite.table.DatabaseTableConfig.extractFieldTypes(DatabaseTableConfig.java:101) 
    at com.j256.ormlite.dao.BaseDaoImpl.initialize(BaseDaoImpl.java:153) 
    at com.j256.ormlite.dao.BaseDaoImpl.<init>(BaseDaoImpl.java:128) 
    at com.j256.ormlite.dao.BaseDaoImpl.<init>(BaseDaoImpl.java:119) 
    at com.j256.ormlite.dao.BaseDaoImpl$5.<init>(BaseDaoImpl.java:921) 
    at com.j256.ormlite.dao.BaseDaoImpl.createDao(BaseDaoImpl.java:921) 
    at com.j256.ormlite.dao.DaoManager.doCreateDao(DaoManager.java:359) 
    at com.j256.ormlite.dao.DaoManager.createDaoFromConfig(DaoManager.java:326) 
    at com.j256.ormlite.dao.DaoManager.createDao(DaoManager.java:55) 
    at com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper.getDao(OrmLiteSqliteOpenHelper.java:279) 
    at com.fibus.ormlite.database.ORMOpenDatabaseHelper.getTableOneDao(ORMOpenDatabaseHelper.java:47) 
    at com.fibus.ormlite.MainActivity.onCreate(MainActivity.java:22) 
    at android.app.Activity.performCreate(Activity.java:5977) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2258) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365) 
    at android.app.ActivityThread.access$800(ActivityThread.java:148) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5272) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) 
Caused by: java.text.ParseException: Unparseable date: "CURRENT_TIMESTAMP" (at offset 0) 
    at java.text.DateFormat.parse(DateFormat.java:571) 
    at com.j256.ormlite.field.types.BaseDateType.normalizeDateString(BaseDateType.java:47) 
    at com.j256.ormlite.field.types.DateStringType.parseDefaultString(DateStringType.java:44) 
    ... 28 more 

フォーマットはと一致し、CURRENT_TIMESTAMPのフォーマットと一致し、データタイプはDataType.DATE_STRINGと同じですが、 結果。
ドキュメントが言うので、そのormliteは、日付などの文字列CURRENT_TIMESTAMPを解析しようとしている私には思える:

はdefaultValue

私たちはテーブルに新しい行を作成しているフィールドの文字列のデフォルト値。デフォルトはnoneです。

この場合、デフォルト値を設定しないようにする方法がありますか? version = trueも試しましたが、行が更新されるたびにフィールドが更新されることは望ましくありません。

私はSOとウェブを検索しましたが、この問題を解決する方法を見つけることができませんでした。

Androidのバージョン2.2
ORMLiteバージョン4.48
SQLiteバージョン3.6.22

答えて

関連する問題