Нет связи с Postgres 10.1 и Hibernate - PullRequest
0 голосов
/ 24 июня 2019

Я недавно перешел на базу данных postgres 10.1 из оракула.Я создал все таблицы вручную с помощью SQL-запросов и убедился, что я не использую двойные кавычки вокруг имен таблиц / столбцов.

CREATE TABLE MYSCHEMA.SOMETABLE (ID VARCHAR(20) NOT NULL primary key, DISPLAYTEXT VARCHAR(100)));// skipping other column names for brevity

Класс сущности в коде

@Entity
@Table(name = "MYSCHEMA", schema = "SOMETABLE")
public class SomeTable implements Serializable {

    private static final long serialVersionUID = -4856666041227614340L;
    @Column(name = "VERSION")
    private String version;

    @Column(name = "DISPLAYTEXT")
    private String displayText;

    //other columns
}

Использование Jpaхранилище, я запрашиваю эту таблицу.

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef  = "someEntityManagerFactoryContentDB",
        transactionManagerRef = "sometransactionManagerContentDB",
        basePackages = {"com.somepath.repository.content"})
public interface SomeSearchConfigRepository extends JpaRepository<SomeTable, String> {
    List<SomeTable> findBySearchTypeAndActiveOrderBySequenceAsc(
            String searchType, String active);
}

Проблема в том, что она не может найти эту таблицу и выдает ошибку ниже.

2019-06-24 09:56:26,781  WARN org.hibernate.engine.jdbc.spi.SqlExceptionHelper:SQL Error: 0, SQLState: 42P01
2019-06-24 09:56:26,782 ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper:ERROR: relation "MYSCHEMA.SOMETABLE" does not exist

Sql, сгенерированный согласно журналам

Hibernate:
    /* select
        generatedAlias0
    from
        SomeTable as generatedAlias0
    where
        (
            generatedAlias0.searchType=:param0
        )
        and (
            generatedAlias0.active=:param1
        )
    order by
        generatedAlias0.sequence asc */ select
            myalias_."ID" as ID1_3_,
            myalias_."ACTIVE" as ACTIVE2_3_,
            myalias_."COLUMNNAME" as COLUMNNA3_3_,
            myalias_."DATATYPE" as DATATYPE4_3_,
            myalias_."DISPLAYTEXT" as DISPLAYT5_3_,
            myalias_."LENGTH" as LENGTH6_3_,
            myalias_."LINKCOLUMN" as LINKCOLU7_3_,
            myalias_."LINKSEARCH" as LINKSEAR8_3_,
            myalias_."LOOKUPCOLUMN" as LOOKUPCO9_3_,
            myalias_."LOOKUP_CATEGORY" as LOOKUP_10_3_,
            myalias_."MULTISELECT" as MULTISE11_3_,
            myalias_."REFERENCEKEY" as REFEREN12_3_,
            myalias_."REFERENCETABLENAME" as REFEREN13_3_,
            myalias_."REFERENCEVALUE" as REFEREN14_3_,
            myalias_."SEARCHTYPE" as SEARCHT15_3_,
            myalias_."SEQUENCE" as SEQUENC16_3_,
            myalias_."TABLENAME" as TABLENA17_3_,
            myalias_."VERSION" as VERSION18_3_
        from
            "MYSCHEMA"."SOMETABLE" myalias_
        where
            myalias_."SEARCHTYPE"=?
            and myalias_."ACTIVE"=?
        order by
            myalias_."SEQUENCE" asc

Неужели аннотации в классах сущностей вызывают эту проблему?Что здесь не так и как я могу исправить эту проблему с минимальными изменениями в моем коде?

1 Ответ

1 голос
/ 24 июня 2019

Я предполагаю, что вы используете Spring Boot.

Один из вариантов - указать Hibernate не указывать имена

spring.jpa.properties.hibernate.globally_quoted_identifiers=false

Или другой вариант - создать таблицы также с кавычками и использовать все имена UPPERCASE

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