Почему не работает preparedStatement при работе с Postgres?
Потому что у вас в БД уже есть запись с первичным ключом 1. Проблема не в PostgreSQL и не в preparedStatement.
Лишь дополню ответ Сергея Горностаева
Попробуйте вот в этой строке задать другой id
preparedStatement.setInt(1, 1);
У вас нарушение уникальности primary key и соответственно, нужно указать другой идентификатор отличный от 1