2016-06-29 5 views
0

Ich versuche ActiveJDBC zu verwenden, um einen integer[] von meiner PostgreSQL Datenbank in den Java equivalent int[] richtig zu konvertieren. Ich erhalte den Abruf ordnungsgemäß, aber das Objekt, das zurückgegeben wird, ist weblogic.jdbc.wrapper.Array_org_postgresql_jdbc_PgArray. Ich muss noch einen Weg finden, das zu konvertieren.ActiveJDBC: Integer [] auf PostgreSQL mit mehreren Schemas in einem DB

Ich habe 2 verschiedene Arten versucht, die Daten für den Zugriff auf:

zuerst den Standard record.findFirst("id = ?", id) Format. Da ich mehrere Schemas in meiner Datenbank habe, fügte ich meinem Modell die @Table-Notation hinzu.

Zweitens habe ich versucht, eine record.findBySQL("select array from record where id = ?", id) zu tun. Ich habe auch versucht array::integer[].

Jedes Mal bekomme ich den PgArray-Typ zurück. Ich habe nach einer Möglichkeit gesucht, diesen Typ in etwas anderes zu konvertieren, aber nichts hat funktioniert.

Gibt es eine Möglichkeit, dies zu tun? Muss ich eine andere Art der Datenwiederherstellung als verwenden?

Antwort

0

JDBC definiert java.sql.Array für Array-typisierte Spalten. PgArray ist nur die Postgres-Implementierung von java.sql.Array.

das Array-Objekt gegeben a Sie (Integer[])a.getArray() erhalten eine Integer Array aus der JDBC-Array-Objekt (wenn der JDBC-Treiber, dass es Sie Integer Objekte zurückkehren hat sich entschieden, und nicht eine andere Numbers) aufrufen können. Eine Hilfsmethode, um den Wert zu extrahieren und in int[] zu konvertieren, wäre wahrscheinlich eine gute Idee.

Ich weiß nicht, ob activejdbc Unterstützung für diese Konvertierung hinter den Kulissen hat.

+0

Ich kann die Methode getArray() nicht verwenden. ActiveJDBC platziert alle abgerufenen Elemente in mein Modell und lade sie mithilfe von: model.get ("Spalte") ab. Es ist keine Methode getArray() zugeordnet. Ich habe versucht, sowohl Integer [] als auch PgArray zu werfen, aber beide werfen ClassCastExceptions. –

+0

Ich habe gerade diese Lösung auf einen anderen Beitrag hier gefunden. Es hat erfolgreich funktioniert. Vielen Dank! –

+0

Wenn Sie das Array durch Aufruf von 'get (" column ")' erhalten, welchen Java-Typ erhalten Sie zurück? – ipolevoy