2013-02-28 13 views
8

Lokal verwende ich mysql, so, wenn ichColumn = „TEXT“ für alle Arten von Datenbanken

verwenden
@Column(columnDefinition = "TEXT") 

Leider Anwendung haben auch in verschiedenen Datenbanken zu laufen, habe ich nicht gesagt worden, was diejenigen, nur „an alle".

Ist es möglich, etwas mit ähnlicher Wirkung zu erstellen, aber in den meisten Datenbanken zu arbeiten? Wie kann ich es erreichen?

Antwort

11

Was ist so etwas wie dieses:

@Lob 
private String someString; 

Ich denke, es ist mehr tragbar ist und sollte TEXT oder LONGDatenTyp effektiv erzeugen.

+0

beware, longtext kann bis zu 4GiB ht sein tp: //stackoverflow.com/questions/13932750/tinytext-text-mediumtext-and-longtext-maximum-storage-sizes – robie2011

2

Wenn Sie @LOB Sie ORA-00932 Ausnahme mit SQL werden müssen DISTINCT (http://ora-00932.ora-code.com/) mit

Ich denke, dass die Lösung auf der Bytes Größe der Zeichenfolge abhängt. Wenn seine < 4000 Bytes, können Sie versuchen @Column mit (name = "...", Länge = 4000)

Ich schlage vor, 4000 Byte für DB comptibility Grund:

  • in Oracle Oracle 8 auf Oracle 11g, Typ VARCHAR2 maximale Größe beträgt 4000 (A4-Seitenformat)
  • In DB2 10 für z/OS, Typ VARCHAR maximale Größe ist 32704
  • In SQL Server 2012, Typ TEXT maximale Größe ist 2,147,483,647 Bytes
+0

@Lob hat für mich gearbeitet, aber ich werde deine Idee in zukünftigen Projekten überprüfen, danke für die Antwort – akuzma

Verwandte Themen