Я пытаюсь создать собственный обработчик типа FILE MyBatis для BLOB Postgres.JDBC: Как получить текущее соединение?
Вот метод мне нужно реализовать, чтобы выполнить интерфейс:
@Override
public File getNullableResult(ResultSet rs, String columnName) throws SQLException {
1.get current connection
2.get postgreSQL LargeObjectManager from current connection
3.get oid from ResultSet, so the Larget Object can be found
4.read the large object and rewrite it into a file
5.return the file
}
Однако я не знаю, как получить текущее соединение в этой ситуации. Есть ли способ получить соединение с ResultSet?
Спасибо заранее,
UPDATE:
PostgreSQL реализует блоб (большой объект, а не BYTEA) в специальном (нестандартный возможно) способ. Он сохраняет все blob в таблице pg_largeobject и использует oid как «указатель», поэтому вы можете ссылаться на blob из вашей реальной таблицы.
Postgres Драйвер JDBC имеет интерфейс API для управления блобом. Более подробно в следующей ссылке: http://jdbc.postgresql.org/documentation/91/binary-data.html
Разве вы не можете просто получить блоб непосредственно из набора результатов? –
@MarkRotteveel no, PostgreSQL реализует blob специальным способом. Он сохраняет все blob в таблице pg_largeobject и использует oid как «указатель», поэтому вы можете ссылаться на blob из вашей реальной таблицы. – Xin
Интересно, я бы ожидал, что драйвер JDBC postgresql скроет эту деталь реализации. –