Переполнение стека в Hibernate с SQLite - PullRequest
0 голосов
/ 29 ноября 2011

Я использую SQLite с Hibernate и получаю следующее исключение.Может быть, я хочу хранить слишком много данных?Есть ли ограничение на размер данных?Кто-нибудь знает проблему?

Exception in thread "main" java.lang.StackOverflowError
    at org.sqlite.Unused.<init>(Unused.java:26)
    at org.sqlite.Stmt.<init>(Stmt.java:41)
    at org.sqlite.PrepStmt.<init>(PrepStmt.java:39)
    at org.sqlite.Conn.prepareStatement(Conn.java:404)
    at org.sqlite.Conn.prepareStatement(Conn.java:399)
    at org.sqlite.Conn.prepareStatement(Conn.java:383)
    at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534)
    at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452)
    at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1700)
    at org.hibernate.loader.Loader.doQuery(Loader.java:801)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
    at org.hibernate.loader.Loader.loadEntity(Loader.java:2037)
    at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)
    at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)
    at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3293)
    at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)
    at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)
    at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)
    at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:285)
    at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
    at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
    at org.hibernate.impl.SessionImpl.get(SessionImpl.java:1005)
    at org.hibernate.event.def.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:453)
    at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:255)
    at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877)
    at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859)
    at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:279)
    at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)

Java-код.Здесь я пытаюсь сохранить модель в БД и где я получаю исключение.

Session session = null;
        Transaction tx = null;
        try {
            System.out.println("[INFO] saveModelToDB() Started!");
            session = getSessionFactory().openSession();
            tx = session.beginTransaction();
            // search for existing model in db
            List l = session.createCriteria(Model.class).list();
            // there is a Model ?
            if(!l.isEmpty()) {
                model = (Model) l.get(0);
                // delete old model
                session.delete(model);
                // force an db update to avoid side effects
                tx.commit();
                // start a new transaction for saving the Model
                tx = session.beginTransaction();
                // persist the ne model
                session.merge(model);
            }
            else {
                session.merge(model);
            }
            tx.commit();
            System.out.println("[INFO] saveModelToDB() Finished!");
...