Unable to build Hibernate SessionFactory

522
18 мая 2018, 02:40

Подключается к базе postgres нормально, на сервере данный код отрабатывает без проблем, у меня на локальной машине такая проблема!

Tomcat log

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in file [C:\Users\Admin\IdeaProjects\arba\new\clean\arba\arba\target\portal-1.0-SNAPSHOT\WEB-INF\classes\META-INF\spring\context-jpa.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: Main] Unable to build Hibernate SessionFactory
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: Main] Unable to build Hibernate SessionFactory
Caused by: org.hibernate.MappingException: No Dialect mapping for JDBC type: 2003

entityManagerFactory

  <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="${datasource.show-sql}"/>
            <property name="generateDdl" value="false"/>
            <property name="databasePlatform" value="${datasource.sql-dialect}"/>
        </bean>
    </property>
    <property name="loadTimeWeaver">
        <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
    </property>
</bean>

DataSource

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${datasource.driver-class-name}"/>
    <property name="url" value="${datasource.url}"/>
    <property name="username" value="${datasource.username}"/>
    <property name="password" value="qwerty123"/>
</bean>

PersistesUnit

 <persistence-unit name="Main" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL9Dialect"/>
        <property name="hibernate.hbm2ddl.auto" value="update"/>
        <property name="hibernate.show_sql" value="false"/>
        <property name="hibernate.dbcp.validationQuery" value="select 1"/>
        <property name="hibernate.dbcp.testOnBorrow" value="true"/>
        <property name="hibernate.dbcp.testOnReturn" value="true"/>
        <property name="hibernate.enable_lazy_load_no_trans" value="true"/>
        <property name="hibernate.temp.use_jdbc_metadata_defaults" value="false"/>
    </properties>
</persistence-unit>
Answer 1

Ошибка "No Dialect mapping for JDBC type: 2003" означает, что в таблице, которую вы пытаетесь использовать, есть поле-массив, и Hibernate не знает, как отразить этот массив постгреса в данные Java. Стоит проверить, что таблицы на сервере и вашей машине имеют одинаковый DDL, используется Hibernate одной версии и одинаковый набор зависимостей.

READ ALSO
Создание объекта в параметрах метода

Создание объекта в параметрах метода

Никак не могу разобраться в чем отличиеВот исходный код:

239
Программа не видит validation.properties

Программа не видит validation.properties

Вместо того что бы выводилось значение свойства, выводится просто текст, который я вписываюЯ пытался обойти эту проблему, вписывая значение...

357
Проверка массива на возврастание

Проверка массива на возврастание

Понятно как узнать, что массив строго возврастающий или убывающий:

264