HSQLDB с EclipseLink JPA не сохраняется после одной транзакции - PullRequest
0 голосов
/ 15 апреля 2019

Я использую файловое хранилище HSQLDB для быстрого поиска данных. Я использую EclipseLink для JPA. Я следил за всем из документов, но данные не сохраняются в файле. Я хочу использовать файл в качестве постоянного хранилища, и данные не должны быть потеряны.

Если я вставляю данные и запрашиваю их в одной и той же транзакции, он возвращает сохраненные данные. Однако, если я запрашиваю отдельно, данных там нет.

**This is my persistence.xml**

 <persistence-unit name="bridge"
                  transaction-type="RESOURCE_LOCAL">

 <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
        <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:file:datastore/bridgedb;shutdown=true;hsqldb.write_delay=false;" />
        <property name="javax.persistence.jdbc.user" value="xyz_user" />
        <property name="javax.persistence.jdbc.password" value="xyz_user" />

        <property name="javax.persistence.schema-generation.database.action" value="none"/>
        <property name="javax.persistence.schema-generation.create-source" value="script"/>
        <property name="javax.persistence.schema-generation.drop-source" value="script"/>
        <property name="javax.persistence.sql-load-script-source" value="sql/create_schema.sql"/>
        <property name="eclipselink.logging.level" value="FINE"/>

        <property name="eclipselink.connection-pool.default.initial" value="1" />
     </properties>

   </persistence-unit>

DaoImpl.java
@Override
public void saveObject(MyObject myObject) {

    try {
        txn.begin();

        entityManager.persist(myObject);
        MyObject newObj = entityManager.find(MyObject.class, myObject.getId());
        // newObj has the stuff saved earlier

        txn.commit();

    } catch (Exception e) {
        log.debug("Exception occurred while saving RRNInfo ", e);
        txn.rollback();
    }

 }

  // Here, it saves fine.

    @Override
    public MyObject getObject(String key) {
    MyObject myObject = null;
    try {
        txn.begin();
        myObject = entityManager.find(MyObject.class, key);

    } catch (Exception e) {
        log.debug("Exception occurred while retrieving RRNInfo", e);
        txn.rollback();
    }
    entityManager.close();

    return myObject;
  }

  // Here, it is gone. There is nothing in the database. 

Кроме того, кажется, что каждый раз, когда запускается SQL-запрос, таблица создано даже после изменения schema-generation.database.action на none.

Есть идеи, что здесь происходит?

...