2013-05-13 52 views

回答

2

所以默認情況下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"); 
} 
+0

尼斯answer..thanks!但我使用MYSQL – 2013-05-13 14:50:45

+0

嗯,我不是一個心靈讀者,所以我不知道。 MySQL應該爲'DataType.LONG_STRING'生成'TEXT'。我剛剛測試過,它確實如此。你使用的是什麼版本的ORMLite?它可能使用錯誤的數據庫類型@AbdennourToumi? – Gray 2013-05-13 15:20:13

+0

我使用last => 4.45。再次感謝此跟蹤。但是,如果DataType.LONG_STRING生成了TEXT,那麼LONGVARCHAR – 2013-05-13 16:20:28