Недавно я обновил версию 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]