18.6.2 PGXデータ型の互換性およびキャスト
PGX JDBCドライバの互換性モードを構成して、ResultSet#getObject()
メソッドのコール時に返されるデータ型を決定できます。
PGX JDBCドライバでは、次の互換性モードがサポートされています:
- PGX (デフォルト): デフォルトでは、PGX JDBCドライバはPGX互換モードを使用してPGXネイティブ型を返します。
- ORACLE_JDBC19: このモードでは、ドライバはOracle Database 19cと互換性のあるデータ型を返すことができます。
- ORACLE_JDBC23: このモードでは、ドライバでOracle Database 23aiと互換性のあるデータ型を返すことができます。
次の表では、様々な互換性モードのためにドライバから返されるデータ型について説明します。
表18-4 データ型の互換性
PGX型 | PGX (デフォルト) | ORACLE_JDBC19 | ORACLE_JDBC23 |
---|---|---|---|
BOOLEAN |
BOOLEAN |
java.math.BigDecimal |
Boolean |
INTEGER /LONG /FLOAT /DOUBLE |
INTEGER /LONG /FLOAT /DOUBLE |
java.math.BigDecimal |
java.math.BigDecimal |
LOCAL_DATE |
java.sql.Date |
java.sql.Timestamp |
java.sql.Timestamp |
TIME |
java.sql.Time |
サポート対象外 | サポート対象外 |
TIME_WITH_TIMEZONE |
java.time.OffsetTime |
サポート対象外 | サポート対象外 |
TIMESTAMP |
java.sql.Timestamp |
oracle.sql.TIMESTAMP |
oracle.sql.TIMESTAMP |
TIMESTAMP_WITH_TIMEZONE |
java.time.OffsetDateTime
|
oracle.sql.TIMESTAMPZ |
oracle.sql.TIMESTAMPZ |
PGX JDBCドライバでの互換性モードの設定
別の互換性モード(デフォルトのPGXモード以外)を使用する場合は、次のようにプロパティの一部として設定できます:
import static oracle.pgx.jdbc.CONNECTION_PROPERTY_COMPATIBILITY_MODE;
import static oracle.pgx.jdbc.ORACLE_JDBC19;
...
Properties properties = new Properties();
properties.put(...);
properties.put(CONNECTION_PROPERTY_COMPATIBILITY_MODE, ORACLE_JDBC19); // set compatibility mode
Connection connection = DriverManager.getConnection("<jdbc_url>", properties);
キャストによるデータ型変換
PGX JDBCドライバでは、次の表に示すように、(互換性モードに関係なく)ある型を別の型にキャストできます。
表18-5 キャストでサポートされている追加の型
PGX型 | デフォルト・マッピング(PGX互換性) | (キャストで)サポートされている追加の型 |
---|---|---|
BOOLEAN |
BOOLEAN |
String 、BigDecimal |
INTEGER |
INTEGER |
String 、BigDecimal 、Long 、Float 、Double |
FLOAT |
FLOAT |
String 、BigDecimal 、Double |
LONG |
LONG |
String 、BigDecimal 、Double |
DOUBLE |
DOUBLE |
String 、BigDecimal |
LOCAL_DATE |
java.sql.Date |
String 、java.time.LocalDate 、java.sql.Timestamp |
TIME |
java.sql.Time |
String 、java.time.LocalTime |
TIME_WITH_TIMEZONE |
java.time.OffsetTime |
String |
TIMESTAMP |
java.sql.Timestamp |
String 、java.time.LocalDateTime 、oracle.sql.TIMESTAMP |
TIMESTAMP_WITH_TIMEZONE |
java.time.OffsetDateTime |
String 、oracle.sql.TIMESTAMPZ |
PreparedObject#setObject(int index, Object o)
のデータ型変換
次の表では、PreparedObject#setObject(int index, Object o)
メソッドをコールするときのデータ型変換について説明します。
表18-6 setObject
メソッドのデータ型変換
指定されたオブジェクト型 | PGX型 |
---|---|
BOOLEAN |
BOOLEAN |
INTEGER /FLOAT /LONG /DOUBLE |
INTEGER /FLOAT /LONG /DOUBLE |
BIGDECIMAL |
DOUBLE |
java.sql.Date 、java.time.LocalDate |
LOCAL_DATE |
java.sql.Time 、java.time.LocalTime |
TIME |
java.time.OffsetTime |
TIME_WITH_TIMEZONE |
java.sql.Timestamp 、java.time.LocalDateTime 、 oracle.sql.TIMESTAMP |
TIMESTAMP |
java.time.OffsetDateTime 、oracle.sql.TIMESTAMPZ |
TIMESTAMP_WITH_TIMEZONE |
親トピック: PGX JDBCドライバを使用したPGQL問合せの実行