- Mapping von java.lange zu oracle.Nummer(14)
Habe ich db-Spalte, deren Datentyp Number (15) und ich habe das entsprechende Feld im java-Klassen als lange. Die Frage ist, wie würde ich eine Karte mit java.sql.Typen.
- würde Typen.BIGINT Arbeit?
- Oder soll ich etwas anderes verwenden?
P. S:
Ich kann nicht leisten, ändern Sie den Datentyp in java-Klasse und innerhalb der DB.
- Wenn Sie nicht ändern können, weder die Datenbank, die nicht die code - was ist der Zweck der Frage?
- Ich denke OP meinte Sie kann es sich nicht leisten, beide zu verändern und wollte Fragen, welches geändert werden soll. Ich könnte falsch sein, obwohl
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom dieser link es sagt, dass
java.sql.Types.BIGINT
sollte verwendet werden, fürlong
in Java zuNumber
in SQL (Oracle).Anbringen screenshot von der Tabelle, falls der link stirbt ständig.
Integer
vsint
und nullablesEinen guten Platz zu finden, zuverlässige Größe Zuordnungen zwischen Java-und Oracle-Datentypen ist in der Hibernate-ORM-tool. Dokumentiert in dem code hier, Hibernate verwendet eine Oracle NUMBER(19,0) zum darstellen von java.sql.Typen.BIGINT sollte die Karte, um eine lange primitave
Ich immer verwenden Sie die wrapper-Typ, da die wrapper-Typen können express-null-Werte.
In diesem Fall werde ich Lange wrapper-Typ.
Ich hatte ein ähnliches problem, wo ich konnte es nicht ändern Sie den Java-Typ oder der Datenbank zu Geben. In meiner situation, die ich brauchte, um die Ausführung einer native SQL-Abfrage (in der Lage sein zu verwenden von Oracle Rekursive Abfrage Fähigkeiten) und ordnen Sie die Ergebnismenge auf einen non-managed entity (im wesentlichen eine einfache pojo-Klasse).
Fand ich eine Kombination von addScalar und setResultTransformer wirkte Wunder.
Wo
notifyStateId
,parentId
,sourceTbl
,sourceId
,msgType
, undlastUpdatedDateAndTime
sind alle Eigenschaften derMyState
.Ohne die
addScalar
's, ich würde einejava.lang.IllegalArgumentException: argument type mismatch
weil Hibernate drehte OracleNumber
Art in eineBigDecimal
abernotifyStateId
undparentId
sindLong
Typen aufMyState
.