Получение ошибки «ORA-02201: последовательность здесь не разрешена» в LINUX - PullRequest
0 голосов
/ 17 мая 2019

Недавно я обновил версию hibernate с 4 до 5. И я получаю ошибку "java.sql.SQLSyntaxErrorException: ORA-02201: sequence not allowed here", когда код пытается зафиксировать объекты в базе данных.

Код работает на машине с Windows, и фиксация прошла успешно, но при запуске из LINUX я получаю сообщение об ошибке. Я разделяю класс сущности и класс, который я использую для фиксации в базе данных. Версия oracle db - 11.2.0.4.0, а используемый мной jar - ojdbc6-11.2.0.3.0.jar:11.2.0.3.0. JDK - 8. Также пробовал использовать ojdbc6-11.2.0.4.0 jar`.

Класс сущности выглядит следующим образом:

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;


@Entity
@Table(name="table name", schema="schema name" )
public class Test implements java.io.Serializable {

    /**
     * 
     */
    private long id;


    @Column(name="Test")
    private String id;


    @Column(name="ID_I")
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "GENSEQ" )
    @SequenceGenerator(name = "GENSEQ" , sequenceName = "GEN_SEQ", allocationSize=1)
    private Long idI;

    @Override
    public String toString() {
        //
    }

    @Override
    public int hashCode() {
        //code for hashcode
    }

    @Override
    public boolean equals(Object obj) {
        //code for equals
    }

}

Класс фиксации:

import java.util.List;

import org.hibernate.FlushMode;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.slf4j.Logger;
import org.springframework.orm.hibernate5.HibernateTemplate;


public interface UpdateDBEntries{


    public void executeFrequently();

    public HibernateTemplate getHibernateTemplate();
    public Logger getLogger();
    public String getDBDetails();

    @SuppressWarnings("deprecation")
    default void save(Object object) {                                
try (final Session session=getHibernateTemplate().getSessionFactory().openSession();)                                                                                 
{
            session.setFlushMode(FlushMode.AUTO);
            session.save(object);
            getLogger().info("Committed ["+object.toString()+"] object in the DB["+getDBDetails()+"]");
        } catch (Exception e) {
            getLogger().error("Unable to Commit the object ["+object.toString()+"] is the DB["+getDBDetails()+"].",e);
        }
    }

}

Я получаю следующее сообщение об ошибке:

java.sql.SQLSyntaxErrorException: ORA-02201: последовательность здесь не разрешена в oracle.jdbc.driver.T4CTTIoer.processError (T4CTTIoer.java:445) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в oracle.jdbc.driver.T4CTTIoer.processError (T4CTTIoer.java:396) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в oracle.jdbc.driver.T4C8Oall.processError (T4C8Oall.java:879) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в oracle.jdbc.driver.T4CTTIfun.receive (T4CTTIfun.java:450) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в oracle.jdbc.driver.T4CTTIfun.doRPC (T4CTTIfun.java:192) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в oracle.jdbc.driver.T4C8Oall.doOALL (T4C8Oall.java:531) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в oracle.jdbc.driver.T4CPreparedStatement.doOall8 (T4CPreparedStatement.java:207) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe (T4CPreparedStatement.java:884) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в oracle.jdbc.driver.OracleStatement.executeMaybeDescribe (OracleStatement.java:1167) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout (OracleStatement.java:1289) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в oracle.jdbc.driver.OraclePreparedStatement.executeInternal (OraclePreparedStatement.java:3584) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в oracle.jdbc.driver.OraclePreparedStatement.executeQuery (OraclePreparedStatement.java:3628) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery (OraclePreparedStatementWrapper.java:1493) ~ [ojdbc6-11.2.0.3.0.jar: 11.2.0.3.0] в org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery (DelegatingPreparedStatement.java:96) ~ [commons-dbcp-1.4.jar: 1.4] в org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery (DelegatingPreparedStatement.java:96) ~ [commons-dbcp-1.4.jar: 1.4] в org.hibernate.id.enhanced.TableStructure.executeQuery (TableStructure.java:216) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.id.enhanced.TableStructure.access $ 300 (TableStructure.java:46) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.id.enhanced.TableStructure $ 1 $ 1.execute (TableStructure.java:138) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.id.enhanced.TableStructure $ 1 $ 1.execute (TableStructure.java:126) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.jdbc.WorkExecutor.executeReturningWork (WorkExecutor.java:55) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.jdbc.AbstractReturningWork.accept (AbstractReturningWork.java:34) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork (JdbcIsolationDelegate.java:57) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.id.enhanced.TableStructure $ 1.getNextValue (TableStructure.java:125) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.id.enhanced.NoopOptimizer.generate (NoopOptimizer.java:40) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final]в org.hibernate.id.enhanced.SequenceStyleGenerator.generate (SequenceStyleGenerator.java:452) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId (AbstractSaveEventListener.java:105) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId (DefaultSaveOrUpdateEventListener.java:192) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId (DefaultSaveEventListener.java:38) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient (DefaultSaveOrUpdateEventListener.java:177) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate (DefaultSaveEventListener.java:32) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:73) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.internal.SessionImpl.fireSave (SessionImpl.java:692) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.internal.SessionImpl.save (SessionImpl.java:684) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.internal.SessionImpl.save (SessionImpl.java:679) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final]

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