所以默認情況下LONG_STRING
類型應該產生TEXT
的模式 - 的Postgres和MySQL中這麼做。你使用什麼數據庫類型?德比生成LONG VARCHAR
,Hsqldb LONGVARCHAR
和Oracle LONG
。我認爲這是出於兼容性的原因。
有幾種方法可以覆蓋ORMLite產生的架構。最簡單的就是自己定義列與columnDefinition
part of the @DatabaseField
:
@DatabaseField(columnDefinition = "TEXT")
String comment;
如果您正在爲數據庫保持兼容的代碼更復雜的變化,你也可以覆蓋DatabaseType
您使用。在這種情況下,您可以覆蓋appendLongStringType(...)
方法來生成不同的模式。我想重寫DerbyDatabaseType
,或者你使用任何數據庫,然後添加類似:
@Override
protected void appendLongStringType(StringBuilder sb, FieldType fieldType,
int fieldWidth) {
sb.append("TEXT");
}
尼斯answer..thanks!但我使用MYSQL – 2013-05-13 14:50:45
嗯,我不是一個心靈讀者,所以我不知道。 MySQL應該爲'DataType.LONG_STRING'生成'TEXT'。我剛剛測試過,它確實如此。你使用的是什麼版本的ORMLite?它可能使用錯誤的數據庫類型@AbdennourToumi? – Gray 2013-05-13 15:20:13
我使用last => 4.45。再次感謝此跟蹤。但是,如果DataType.LONG_STRING生成了TEXT,那麼LONGVARCHAR – 2013-05-13 16:20:28