Hello,
When I add an activation code to my objectdb.conf file, I get the following exception:
[ObjectDB 2.7.5_05] Unexpected exception (Error 990) Generated by OpenJDK 64-Bit Server VM 1.8.0_181 (on Linux 3.10.0-693.el7.x86_64). Please report this error on http://www.objectdb.com/database/issue/new com.objectdb.o.InternalException: null com.objectdb.o.InternalException at com.objectdb.o.InternalException.f(InternalException.java:235) at com.objectdb.o.CFG.C(CFG.java:747) at com.objectdb.o.CFG.B(CFG.java:665) at com.objectdb.o.CFG.n(CFG.java:563) at com.objectdb.o.CFG.ZU(CFG.java:415) at com.objectdb.o.CFG.g(CFG.java:355) at com.objectdb.o.CFG.f(CFG.java:299) at com.objectdb.o.RCL.<clinit>(RCL.java:36) at com.objectdb.o.UNM$f.<init>(UNM.java:167) at com.objectdb.o.UNM.r(UNM.java:107) at com.objectdb.o.UNM.q(UNM.java:77) at com.objectdb.jpa.Provider.createEntityManagerFactory(Provider.java:58) at com.objectdb.jpa.Provider.createEntityManagerFactory(Provider.java:32) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:80) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) at pgtester.ObjectDBPopulator.main(ObjectDBPopulator.java:20) Exception in thread "main" java.lang.ExceptionInInitializerError at com.objectdb.o.UNM$f.<init>(UNM.java:167) at com.objectdb.o.UNM.r(UNM.java:107) at com.objectdb.o.UNM.q(UNM.java:77) at com.objectdb.jpa.Provider.createEntityManagerFactory(Provider.java:58) at com.objectdb.jpa.Provider.createEntityManagerFactory(Provider.java:32) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:80) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) at pgtester.ObjectDBPopulator.main(ObjectDBPopulator.java:20) Caused by: com.objectdb.o.InternalException at com.objectdb.o.InternalException.f(InternalException.java:235) at com.objectdb.o.CFG.C(CFG.java:747) at com.objectdb.o.CFG.B(CFG.java:665) at com.objectdb.o.CFG.n(CFG.java:563) at com.objectdb.o.CFG.ZU(CFG.java:415) at com.objectdb.o.CFG.g(CFG.java:355) at com.objectdb.o.CFG.f(CFG.java:299) at com.objectdb.o.RCL.<clinit>(RCL.java:36) ... 8 more
If I remove the activation code from my configuration file, I get:
Exception in thread "main" [ObjectDB 2.7.5_05] javax.persistence.PersistenceException Too many persistent objects (>1000000) - exceeds evaluation limit (error 1012) at pgtester.ObjectDBPopulator.lambda$main$0(ObjectDBPopulator.java:28) at java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:110) at java.util.stream.IntPipeline$Head.forEach(IntPipeline.java:557) at pgtester.ObjectDBPopulator.main(ObjectDBPopulator.java:24) Caused by: com.objectdb.o.UserException: Too many persistent objects (>1000000) - exceeds evaluation limit at com.objectdb.o.MSG.a(MSG.java:64) at com.objectdb.o.JPE.d(JPE.java:143) ... 7 more
This is why I think something is wrong with my activation code.
I am adding my activation code to my config file as such:
<database>
<size initial="256kb" resize="256kb" page="2kb" />
<recovery enabled="true" sync="false" path="." max="128mb" />
<recording enabled="false" sync="false" path="." mode="write" />
<locking version-check="true" />
<processing cache="64mb" max-threads="10" />
<query-cache results="32mb" programs="500" />
<extensions drop="temp,tmp" memory="mem" />
<activation code="XXXX-XXXX-XXXX-XXXX-XXXX" />
</database>
My java program is very simple and looks like the following:
import java.util.stream.IntStream; import javax.persistence.Entity; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.persistence.Query; public class ObjectDBPopulator { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("$objectdb/db/my_entity.odb"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); IntStream.range(0, 1000000).forEach(i -> { MyEntity myEntity = new MyEntity("test" + i); em.persist(myEntity); if(i % 5000 == 0) { em.flush(); em.clear(); } }); em.getTransaction().commit(); Query q1 = em.createQuery("SELECT count(my) from MyEntity my"); System.out.println(q1.getSingleResult()); em.close(); emf.close(); } @Entity public static class MyEntity { private String name; MyEntity(String name) { this.name = name; } @Override public String toString() { return name; } } }
Any help would greatly be appreciated! Thank you!