Мое приложение использует OpenJPA для подключения к базе данных Postgres. В схеме я использую inet postgres тип данных в столбце. Это поле в Java является строкой. Я могу правильно прочитать поле, но у меня проблемы с вставкой новой строки.Использование inet postgres datatype с OpenJPA
Поиск в Интернете я нашел три возможных решения, чтобы сделать это:
Создание Native запроса. Этот метод работает, но в моем конкретном случае создание собственного запроса для вставки этой строки подразумевает создание большего количества запросов, которыми управляет OpenJPA, что может привести к большому количеству ошибок. Таким образом, это не более подходящее решение в этом случае.
Создание PostgresDictionary как в этом вопросе: How to use Postgres inet data type with OpenJPA?. Я реализовал это именно так, как объясняет этот пользователь. Я создал пользовательский PostgresDictionary, я добавил columnDefinition в аннотации @Column, и я добавил свойство в файле persistence.xml. Но мой пользовательский PostgresDictionary никогда не называется. Когда приложение создано, PostgresDictionary продолжает создавать org.apache.openjpa.jdbc.sql.PostgresDictionary вместо пользовательского.
Реализация пользовательской стратегии, как этот пример http://webspherepersistence.blogspot.co.at/2009/04/custom-orm-with-openjpa.html. Но для реализации Стратегии я должен установить тип столбца из класса java.sql.Types (http://docs.oracle.com/javase/6/docs/api/java/sql/Types.html?is-external=true), и в этом столбце нет типа inet. Я попробовал Types.OTHER, но у меня все еще есть та же ошибка, указывающая, что столбец является типом типа, а значение, которое я пытаюсь вставить, - varchar (String).
Итак, есть ли у кого-нибудь идея, как исправить проблему, которую я испытываю при сопоставлении?