Как работать с расширением, созданным в Postgres весной данных JPA - PullRequest
0 голосов
/ 01 февраля 2019

Я новичок в данных весны jpa.

У меня есть устаревшая база данных, к которой я пытаюсь подключиться через данные весны jpa.

У меня есть определенное расширение, созданное в postgres, котороеиспользуется для некоторых столбцов в моих таблицах

для, например, CREATE EXTENSION, ЕСЛИ НЕ СУЩЕСТВУЕТ citext С SCHEMA public;

это расширение создано в основном для (без учета регистра) текста

теперь, когда я пытаюсь отобразить таблицы, используя стандартные аннотации сущностей, это выдает мне ошибку, поскольку я не могу понять это расширение

Ошибка, которую я получаю,

g.springframework.boot.SpringApplication - сбой запуска приложения org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем entityManagerFactory, определенным в ресурсе пути к классу [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaAutoConfiguration.class]: вызов метода initне удалось;вложенным исключением является javax.persistence.PersistenceException: [PersistenceUnit: default] Невозможно построить Hibernate SessionFactory;вложенное исключение: org.hibernate.tool.schema.spi.SchemaManagementException: проверка схемы: обнаружен неправильный тип столбца в столбце [domain_obj_nm] в таблице [attr_grp_defn];найдено [citext (Types # OTHER)], но ожидается [varchar (255) (Types # VARCHAR)] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapable.ava.bebe.begF).factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:555) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:483) в org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:312) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) в org.springframework.beans.factory.avaBeanBeFBв org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:197) в org.springframework.context.support.AbstractApplicationContext.getБин (AbstractApplicationContext.java:1080) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:857) в org.springframework.context.support.Context.support.Context.support.Context.support.Context.support.Context.support.Context.uppp.boot.context.embedded.) в org.springframework.boot.SpringApplication.run (SpringApplication.java:303) в org.springframework.boot.SpringApplication.run (SpringApplication.java:1118) в org.springframework.boot.SpringApplication.run (Spring:1107) at com.sas.mkt.example.app.Application.main (Application.java:43). Причина: javax.persistence.PersistenceException: [PersistenceUnit: default] Невозможно построить Hibernate SessionFactoгу;вложенное исключение: org.hibernate.tool.schema.spi.SchemaManagementException: проверка схемы: обнаружен неправильный тип столбца в столбце [domain_obj_nm] в таблице [attr_grp_defn];найдено [citext (Types # OTHER)], но ожидается [varchar (255) (Types # VARCHAR)] в org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory (AbstractEntityManagerFactory:orm.jjfjjjjfjjjf).AbstractEntityManagerFactoryBean.afterPropertiesSet (AbstractEntityManagerFactoryBean.java:371) в org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet (LocalContainerEntityManager)в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1692) в org.springframework.beans.factory.Beanby: org.hibernate.tool.schema.spi.SchemaManagementException: проверка схемы: обнаружен неправильный тип столбца в столбце [domain_obj_nm] в таблице [attr_grp_defn];найдено [citext (Types # OTHER)], но ожидается [varchar (255) (Types # VARCHAR)]

Мне нужен способ с помощью аннотаций для решения этой проблемы, это нормально, если он обрабатывается как текстовый столбец.

1 Ответ

0 голосов
/ 01 февраля 2019

Hibernate проверяет схему при запуске, так как для свойства ddl.auto установлено значение validate.

Вы можете либо полностью отключить проверку, либо указать определение столбца для соответствующего свойства @Column, которое должно позволятьпроверка для прохождения:

https://docs.oracle.com/javaee/5/api/javax/persistence/Column.html#columnDefinition()

@Column(columnDefinition = "citext") //or "other"?
private String myField; 

Обратите внимание, что определение столбца влияет только на операции DDL, т.е. создание или проверка схемы.

Отключение проверки полностью зависит от вашегонастроить.Например, в приложении с загрузочной пружиной вы устанавливаете spring.jpa.hibernate.ddl-auto = false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...