Als ich eine Tabelle aus einem Modell mit einer Kombination aus Iciql + SQLite erstellte, fiel es mir schwer, einen zusammengesetzten Primärschlüssel festzulegen, sodass ich Informationen austauschen kann.
Siehe hier. http://iciql.com/
· Java-Version ... 8 ・ Version von iciql ... iciql-2.2.1 -Sqlite jdbc Treiber ... sqlite-jdbc-3.8.11.2.jar
Stellen Sie den Entschlüsselungsschlüssel wie folgt ein. (Legen Sie den durch Kommas verbundenen Feldnamen in primaryKey fest.)
@IQTable(name = "model", primaryKey= "field1,field2" )
public class Model {
@IQColumn(name = "field1")
public String field1;
@IQColumn(name = "field2")
public int field2;
@IQColumn(name = "value")
public String value;
}
Als ich das tat, wurde der Primärschlüssel nur in Feld2 gesetzt. (Legen Sie den Feldnamen im Primärschlüssel als Array fest.)
@IQTable(name = "model", primaryKey={"field1","field2"} )
public class Model {
@IQColumn(name = "field1")
public String field1;
@IQColumn(name = "field2")
public int field2;
@IQColumn(name = "value")
public String value;
}
Auch hier wurde der Primärschlüssel nur in Feld2 gesetzt. (Setzen Sie true für jeden Primärschlüssel von @IQColumn.)
@IQTable(name = "model")
public class Model {
@IQColumn(name = "field1", primaryKey=true)
public String field1;
@IQColumn(name = "field2", primaryKey=true)
public int field2;
@IQColumn(name = "value")
public String value;
}
Mit postgres (*) funktionieren beide oben genannten schlechten Beispiele 1 und 2 wie beabsichtigt. Wir haben keine anderen DBs überprüft.
*) Die postgres-Version ist 9.6 und der jdbc-Treiber verwendet postgresql-9.4.1211.jar.
Recommended Posts