greenDAO を使用して、データベース モデルの文字列の長さに関する特定の制限を強制しようとしています。私はこのようなものが存在すると推測したでしょう:
protected void addProperties(Schema inSchema, Entity inEntity) {
inEntity.addIdProperty();
inEntity.addStringProperty("description").notNull().maxLength(42);
}
私の最初の推測は、次のように、結果の DAO クラス (ここでは別の目的で説明されています)を変更することでした。
public static void createTable(SQLiteDatabase db, boolean ifNotExists) {
String constraint = ifNotExists? "IF NOT EXISTS ": "";
db.execSQL("CREATE TABLE " + constraint + "'TEST' (" + //
"'_id' INTEGER PRIMARY KEY ," +
"'DESCRIPTION' VARCHAR(42) NOT NULL );");
}
次に、SQLite 自体は文字列の制限をサポートしていないことがわかりました。
「SQLite は VARCHAR の長さを強制しません。VARCHAR(10) を宣言することができ、SQLite はそれに 500 文字を入れることができます。そして、500 文字すべてをそのまま保持します - 決して切り捨てられません。」SQLite FAQから
私が思いついた唯一の (醜い) 解決策は、DAO-Object 用の別のラッパーを作成することでした。だから私の質問は: 私がアーカイブしようとしているものに対するエレガントな解決策はありますか、そして/または greenDAO の将来のリリースにそれを含める計画はありますか?