Hibernate Исключение: при переходе с MySQL на Oracle 11 г дБ - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь изменить базу данных моего приложения с mysql на oracle 11g.Я использую hibernate в этом приложении, но hibernate выбрасывает:

org.hibernate.exception.SQLGrammarException: could not execute query
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
        at org.hibernate.loader.Loader.doList(Loader.java:2231)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
        at org.hibernate.loader.Loader.list(Loader.java:2120)
        at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:312)
        at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1722)
        at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
        at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:175)

Ниже мой файл hibernate.cfg.xml:

*<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <!-- <property name="hibernate.default_schema">wind</property> -->
        <property name="show_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">validate</property>
        <property name="hibernate.cache.use_second_level_cache">false</property>
        <property name="hibernate.cache.use_query_cache">false</property>
        <!-- <property name="connection.autoReconnect">true</property> -->
        <!-- <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">100</property>-->
        <property name="hibernate.c3p0.timeout">25200</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        <property name="hibernate.c3p0.idle_test_period">3000</property>*

Я использую один файл конфигурации для URL базы данных иid пароль.

DATABASE_URL=jdbc:oracle:thin:@localhost:1521/wind
DATABASE_USERNAME=appuser
DATABASE_PASSWORD=appuser
DATABASE_CONN_POOL_MIN=5
DATABASE_CONN_POOL_MAX=50

Файл сопоставления:

 <hibernate-mapping>
        <class name="com.nsn.abc.entity.UserInfo" table="user_info" >
            <id name="id" type="java.lang.Integer">
                <column name="id" />
                <generator class="assigned" />
            </id>
            <property name="username" type="string">
                <column name="username" length="30" not-null="true" unique="true" />
            </property>
            <property name="firstName" type="string">
                <column name="first_name" length="30" not-null="true" />
            </property>
            <property name="lastname" type="string">
                <column name="lastname" length="30" />
            </property>
            <property name="email" type="string">
                <column name="email" length="50" />
            </property>
            <property name="password" type="string">
                <column name="password" length="30" not-null="true" />
            </property>
            <property name="phoneNumber" type="string">
                <column name="phone_number" length="30" />
            </property>
            <property name="rights" type="string">
                <column name="rights" length="30" not-null="true" />
            </property>
            <property name="counter" type="int">
                <column name="counter" not-null="true" />
            </property>
            <property name="role" type="string">
                <column name="role" length="20" />
            </property>
            <property name="activeFlag" type="boolean">
                <column name="active_flag" not-null="true" />
            </property>
            <property name="info" type="string">
                <column name="info" length="45" />
            </property>
            <set name="massProvisioningHistories" table="mass_provisioning_history" inverse="true" lazy="true" fetch="select">
                <key>
                    <column name="user_ref" not-null="true" />
                </key>
                <one-to-many class="com.nsn.abc.entity.MassProvisioningHistory" />
            </set>
        </class>
    </hibernate-mapping>

Я проверил всю конфигурацию и другие детали, но все еще нет прогресса.Его выброс Ошибка SQL: 923, Состояние SQLS: 42000 . с ORA-00923: ключевое слово FROM не найдено там, где ожидается В журналах его запрос ниже генерируется: Hibernate: выберите userinfo0_.id в качестве id25_, userinfo0_.username в качестве username25_, userinfo0_.first_name в качестве first3_25_, userinfo0_.lastname как фамилия25_, userinfo0_.email как email25_, userinfo0_.password как пароль25_, userinfo0_.phone_number как phone7_25_, userinfo0_.rights как права25_, userinfo0_.counter как counter25_, userinfo0_.role как роль25_, userinfo0_.active_flag как активный11_info_info как активный11как info25_ из user_info userinfo0_ где userinfo0_.username =?

Пожалуйста, предложите.

привет, скр

1 Ответ

0 голосов
/ 17 октября 2018

В приложении мы использовали SELECT 1. для проверки спящего соединения.

MySql поддерживает «SELECT 1», но в оракуле нам нужно упомянуть «SELECT 1 from dual».

Теперь работает нормально.

спасибо за помощь.

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