JdbcTemplate и inet тип данных

Одна из моей таблицы имеет тип столбца как inet. И когда я пытаюсь выполнить, вставляют операцию с помощью Строки в качестве типа для inet столбца, это говорит, что "столбец "IP" имеет тип inet, но выражение имеет варьирование символа текста": который является совершенно допустимым исключением. Теперь, мой вопрос состоит в том, как я даю jdbcTemplate команду использовать тип inet вместо Строки. Я пробую что-то как:

MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("ip",new SqlParameterValue(Types.??, conn.getIPAddress()));

Тип inet не перечислен в классе Типов, что я передам?

P.S. Я использую версию 8.4.4 PostgresSql.

9
задан Amit Goyal 20 June 2010 в 07:38
поделиться

2 ответа

Одна из возможностей - добавить операцию приведения к заполнителю в вашем sql, например:

insert into t(ip) values(?::inet)

Вместо этого IP-адрес преобразуется из текста в inet-серверную сторону, поэтому любые ошибки -форматированный адрес нужно будет декодировать с сервера ... или просто проверить его перед вставкой и надеюсь.

8
ответ дан 3 November 2019 в 00:58
поделиться

Вы должны использовать Typer.OTHER, чтобы позволить postgresql попытаться определить правильный тип.

Вы можете добавить "stringtype=unspecified" к параметрам соединения JDBC. Это даст указание драйверу позволить postgres попытаться определить нужный тип.

Третья возможность заключается в создании подкласса PGobject. В старом драйвере был предусмотрен такой подкласс PGinet, но, видимо, по тем или иным причинам его поддержка была прекращена. Геометрические типы все еще присутствуют, но сетевые типы больше не входят в пакет драйвера, я думаю.

3
ответ дан 3 November 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: