1

Я пытаюсь подключиться к Oracle, и я получаю эту ошибку в Hibernate-5.0, хотя я включил это свойство в конфигурации.getGeneratedKeys() поддержка не включена ошибка в Hibernate 5.0.0.CR2

> Aug 10, 2015 8:49:34 AM org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl useContextualLobCreation 
INFO: HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException 
Aug 10, 2015 8:49:35 AM org.hibernate.AssertionFailure <init> 
ERROR: HHH000099: an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session): org.hibernate.AssertionFailure: getGeneratedKeys() support is not enabled 
Exception in thread "main" org.hibernate.AssertionFailure: getGeneratedKeys() support is not enabled 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.checkAutoGeneratedKeysSupportEnabled(StatementPreparerImpl.java:94) 
    at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:113) 
    at org.hibernate.id.SequenceIdentityGenerator$Delegate.prepare(SequenceIdentityGenerator.java:93) 

Мой hibernate.cfg.xml такой, как показано ниже.

<hibernate-configuration> 
<session-factory> 
    <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
    <property name="hibernate.connection.password">*****</property> 
    <property name="hibernate.connection.url">jdbc:oracle:thin:@*****</property> 
    <property name="hibernate.connection.username">*****</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> 
    <property name="hibernate.jdbc.use_get_generated_keys">true</property> 

    <property name="show_sql">true</property> 
    <property name="connection.pool_size">1</property> 
    <!-- List of XML mapping files --> 
    <mapping resource="mapping/Employee.hbm.xml" /> 
</session-factory> 

И Employee.hbm.xml как ниже

<hibernate-mapping> 
<class name="domain.Employee" table="EMPLOYEE"> 
    <id name="id" type="integer" column="id"> 
     <generator class="sequence-identity"> 
      <param name="sequence">EMP_SEQ</param> 
     </generator> 
    </id> 
    <property name="firstName" column="first_name" type="string" /> 
    <property name="lastName" column="last_name" type="string" /> 
    <property name="salary" column="salary" type="integer" /> 
</class> 

Я много раз пытался, но, кажется, не решить. Где я здесь ошибся? Любые указатели - большая помощь. Заранее спасибо.

ответ

1

Не уверен, что это проблема с версией Hibernate, потому что, когда я изменяю версию зависимостей на 4.3.9.Final из 5.0.0.CR2 в POM, тогда она работает нормально.

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.9.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.3.9.Final</version> 
    </dependency> 
0

Я не думаю, что это ваш код, это проблема, но Oracle.

Согласно комментариям в Oracle9Dialect, Oracle не поддерживает возврат сгенерированного ключа, как и любая другая база данных.

+0

Есть ли решение для этого? Как использовать последовательности для первичных/уникальных ключей? – Vishwa

+0

Hibernate установит идентификатор объекта. Если вы используете JPA EntityManager, он будет установлен на том же объекте, и если вы используете сохранение сеанса #, он вернет ID – Peter

+0

Не уверен, в чем проблема. Но когда я изменяю pom.xml для включения другой версии, то он работает без ошибок.
Vishwa

 Смежные вопросы

  • Нет связанных вопросов^_^