2015-07-25 5 views
0

У меня есть транзакция с использованием данных весны, и я пытаюсь выполнить операцию сохранения (операцию вставки). [SQL0913] Таблица строк или объектов в виде схемы * Используемый файл.SQL0913 Таблица строк или объектов в виде схемы * Используемый файл

Ниже сущность

@Entity 
@IdClass(OsytxlId.class) 
@Table(name="OSYTXL") 
@NamedQuery(name="Osytxl.findAll", query="SELECT o FROM Osytxl o") 
public class Osytxl implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @Column(name="TLCONO") 
    private BigDecimal tlcono; 

    @Id 
    @Column(name="TLDIVI") 
    private String tldivi; 

    @Id 
    @Column(name="TLLINO") 
    private BigDecimal tllino; 

    @Column(name="TLLMTS") 
    private BigDecimal tllmts; 

    @Id 
    @Column(name="TLLNCD") 
    private String tllncd; 

    @Column(name="TLTX60") 
    private String tltx60; 

    @Id 
    @Column(name="TLTXID") 
    private BigDecimal tltxid; 

    @Id 
    @Column(name="TLTXVR") 
    private String tltxvr; 

    //getter and setters 

} 

Я использую springdata-JPA И я звоню следующую часть коды из класса реализации сервиса Перед следующей вставкой, мне нужно удалить содержимое перед вставкой.

  Osytxl osytxl = null; 
      Collection<Osytxl> osytxlList = new ArrayList<Osytxl>(); 
      for (int lineNo = 0; lineNo < lines.length; lineNo++) { 
       osytxl = new Osytxl(); 
       osytxl.setTlcono(osytxh.getThcono()); 
       osytxl.setTldivi(osytxh.getThdivi()); 
       osytxl.setTltxid(osytxh.getThtxid()); 
       osytxl.setTltxvr(osytxh.getThtxvr()); 
       osytxl.setTllncd(osytxh.getThlncd()); 
       osytxl.setTllmts(new BigDecimal("1437651510403")); 
       osytxl.setTllino(new BigDecimal(lineNo+1)); 
       osytxl.setTltx60(lines[lineNo]); 
       osytxlList.add(osytxl); 
      } 
      if(osytxlList.size()>0) 
       osytxlRepository.save(osytxlList); 

И я использую JPA хранилище Но я получаю следующее исключение

org.springframework.orm.jpa.JpaSystemException: org.hibernate.exception.GenericJDBCException: could not execute statement; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute statement 
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:415) 
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:418) 
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59) 
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213) 
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodIntercceptor.invoke(CrudMethodMetadataPostProcessor.java:122) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
at com.sun.proxy.$Proxy107.saveAndFlush(Unknown Source) 


........................................................ 



Caused by: java.sql.SQLException: [SQL0913] Row or object OSYTXL in schema type *FILE in use. 
at com.ibm.as400.access.JDError.createSQLExceptionSubClass(JDError.java:877) 
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:706) 
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:676) 
at com.ibm.as400.access.AS400JDBCStatement.commonExecute(AS400JDBCStatement.java:1021) 
at com.ibm.as400.access.AS400JDBCPreparedStatement.executeUpdate(AS400JDBCPreparedStatement.java:1825) 
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208) 
... 127 more 

Я использую ISeries (DB2) .AM я что-то отсутствует или есть что-то, что нужно сделать дополнительно в настойчивости. xml. Может кто-нибудь помочь.

+1

Важной частью является * Вызванный: java.sql.SQLException: [SQL0913] Строка или объект OSYTXL в типе схемы * FILE в использовании. * Возможно, https://www-304.ibm.com/support/docview.wss?uid=swg21163496 помогает с этой ошибкой. –

+0

переместились в отдельный метод, как показано ниже @Transactional (распространение = Propagation.REQUIRES_NEW, rollbackFor = RuntimeException.class) \t private void insertIntoOsytxl (String [] lines, Osytxh osytxh) и скопируйте наклеенный фрагмент кода. но все равно такая же ошибка –

+0

Вы также выпустили все используемые ранее ресурсы, то есть закрыли существующие подключения или перезапустили базу данных? –

ответ

0

Я нашел на Experts Exchange, что это может быть связано с запросами вне вашего приложения, блокируя необходимые записи.

Добавление только для чтения на ваш запрос, как это:

SELECT * FROM FILE.TABLE 
FOR READ ONLY