私は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