2016-05-24 20 views
2

Gibt es eine Möglichkeit zu ändern, ein "ORGANIZE BY ROW" -Argument anzugeben, wenn Sie eine Tabelle mit JPA definieren? Der Code arbeite ich an istJPA wie definiert man @Table mit ORGANIZE BY ROW

@Entity 
@Table(name = "ANSWERS") 
public class AnswerEntity {  
    @Id 
    @Column(name = "CLASS") 
    private String answerClass; 

    @Lob 
    @Column(name = "TEXT", unique = false, nullable = false) 
    private String answerText; 
} 

Ich mag würde ein "ORGANIZE BY ROW" entspricht

CREATE TABLE ANSWERS (CLASS VARCHAR(256), TEXT CLOB(1000000) NOT NULL) ORGANIZE BY ROW; 
+1

Auch wenn es möglich ist, (ich weiß nicht, ob es ist), werden Sie wahrscheinlich nicht physische Implementierungsdetails der Mischung sollte Datenbanktabelle mit der von JPA bereitgestellten Abstraktion. – mustaccio

Antwort

1

hinzufügen Sieht aus wie Sie die org.apache.openjpa.jdbc Unterklasse könnte. sql.DB2Dictionary und Überschreibung:

getCreateTableSQL

public String [] getCreateTableSQL (Tabelle Tabelle) Geben Sie eine Reihe von SQL-Anweisungen zurück, um die angegebene Tabelle mit Spalten zu erstellen. Indizes und Einschränkungen werden separat erstellt.

public class CutomDB2Dictionary extends DB2Dictionary{ 

    @Override 
    public String getCreateTableSQL(Table table){ 
     String sql = super.getCreateTableSQL(table); 

     if(table.getName().equalsIgnoreCase("ANSWERS")){ 
      sql += " ORGANIZE BY ROW"; 
     } 

     return sql; 
    } 
} 

Ihre benutzerdefinierten DB2-Wörterbuch Geben Sie in der config:

<property name="openjpa.jdbc.DBDictionary" value="com.test.CutomDB2Dictionary "/> 
+0

Haben Sie versucht, dies in bluemix mit javaee7.0 zu verwenden. Ich kann das nicht mit DashDB für meine JPA arbeiten. DashDB verwendet standardmäßig "Organisieren nach Spalte" und JPA funktioniert nicht gut damit. Also versuche ich Create-Abfragen mit "Organisieren nach Zeile" zu setzen. Ich war sehr zuversichtlich, dass Ihre Lösung für Dashdb funktioniert, aber nicht funktioniert. Kannst du bitte helfen. –

+0

Ich empfehle, dies als eine Abfrage mit Bluemix-Unterstützung zu erhöhen. Dies sollte "out of the box" funktionieren, so dass ein zugrunde liegendes Produktproblem beseitigt werden muss. –

+0

In welchem ​​Maven-Paket ist die DB2Dictionary-Klasse? – Mindaugas