Package org.apache.openjpa.persistence

Examples of org.apache.openjpa.persistence.OpenJPAEntityManagerSPI


        if (entityManagerListeners.containsKey(entityManager)) {
            return;
        }

        if (entityManager instanceof OpenJPAEntityManagerSPI) {
            OpenJPAEntityManagerSPI openjpaEM = (OpenJPAEntityManagerSPI) entityManager;
            OpenJPALifecycleListener listener = new OpenJPALifecycleListener();
            openjpaEM.addLifecycleListener(listener, (Class[])null);
            entityManagerListeners.put(entityManager,  listener);
            return;
        }

        Object delegate = entityManager.getDelegate();
View Full Code Here


    public void testXMLCustomerOrder() { 
        // skip if dictionary has no support for XML column type
        if (!enabled)
            return;

        OpenJPAEntityManagerSPI em = emf.createEntityManager();
        DBDictionary dict = ((JDBCConfiguration) em.getConfiguration())
            .getDBDictionaryInstance();

        String sqllog = TestXMLCustomerOrder.class.getName();
        sqllog = sqllog.replace('.', '/');
        sqllog = "./" + sqllog;
        if (dict instanceof DB2Dictionary)
            sqllog += ".db2";
        else if (dict instanceof OracleDictionary)
            sqllog += ".oracle";
        else if (dict instanceof SQLServerDictionary)
            sqllog += ".sqlserver";

        // For platform specific expected sqls are under resources.
        // The generated sql of the test is captured and written to file:
        //     ./TestXMLCustomerOrder.log
        // This output file contents should match with the platform specfic
        // sqls.       
        System.out.println("Expected pushdown SQL log file is in: " + sqllog);
       
        sql.clear();

        try {
            em.getTransaction().begin();
            deleteAllData(em );
            em.getTransaction().commit();

            em.getTransaction().begin();
            loadData(em);
            em.getTransaction().commit();

            em.close();

            // By closing and recreating the EntityManager,
            // this guarantees that data will be retrieved from
            // the database rather than just reused from the
            // persistence context created by the load methods above.

            em = emf.createEntityManager();

            System.err.println("Main started.");
            int test=1;
            List<Address> addrs = em.createQuery(
                "select o.shipAddress from Order o")
                .getResultList();
            for (Address addr : addrs) {
                System.out.println("addr= " + addr.toString());
            }
            String qstrings[] = {
                "select o from Order o",
                "select o from Order o, Order o2 where o.shipAddress.city " +
                    "= o2.shipAddress.city",
                "select o from Order o, Customer c where o.shipAddress.city " +
                    "= c.address.city",
                "select o from Order o where o.shipAddress.city = 'San Jose'"
            };
            String qstring = null;
            for (int i = 0;i < qstrings.length; i++) {
                qstring = qstrings[i];
                List orders = em.createQuery(qstring).getResultList();
                printOrders(orders, test++);
            }

            // query passing parameters
            qstring = "select o from Order o where o.shipAddress.city = ?1";
            Query q5 = em.createQuery(qstring);
            q5.setParameter(1, "San Jose");
            List orders =q5.getResultList();
            printOrders(orders, test++);

            qstring = "select o from Order o where ?1 = o.shipAddress.city";
            Query q6 = em.createQuery(qstring);
            q6.setParameter(1, "San Jose");
            orders = q6.getResultList();
            printOrders(orders, test++);

            em.close();

            // test updates
            em = emf.createEntityManager();
            testUpdateShipaddress(em, test++);

            em.close();
            em = emf.createEntityManager();

            // query after updates
            orders = em.createQuery("select o from Order o").getResultList();
            System.out.println("After Update:");
            printOrders(orders, test++);

            // queries expecting exceptions
            String[] badqstrings = {
                "select o from Order o where o.shipAddress.city = 95141",
                "select o from Order o where o.shipAddress.street " +
                    "= '555 Bailey'",
                "select o from Order o where o.shipAddress.zip = 95141"
            };
            for (int i = 0; i < badqstrings.length; i++) {
                qstring = badqstrings[i];
                try {
                    System.out.println("\n>> Query "+test+": "+qstring);
                    test++;
                    orders = em.createQuery(qstring).getResultList();
                }
                catch (Exception e){
                    System.out.println("Exception: "+e);
               
            }

            dumpSql();
            em.close();
            emf.close();
            System.out.println("Main ended normally.");
        } catch (Exception e){
            System.out.println("Exception: "+e);
            e.printStackTrace();
View Full Code Here

   
    /*
     * Optimistic=true, lock mode = none set explicitly on the fetch plan.
     */
    public void testForUpdateClauseAbsentInQueryWithFetchPlanNoneLockMode() {
        OpenJPAEntityManagerSPI em = emf.createEntityManager();
        em.getTransaction().begin();
       
        OpenJPAQuery<?> q = em.createNamedQuery("findEmployeeById").setParameter("id", 0);
        FetchPlan fp = q.getFetchPlan();
        fp.setReadLockMode(LockModeType.NONE);
        assertClauseAbsentInSQL(lockClause, q);
       
        q = em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0);
        fp = q.getFetchPlan();
        fp.setReadLockMode(LockModeType.NONE);
        assertClauseAbsentInSQL(lockClause, q);
       
        em.getTransaction().commit();
        em.close();
    }
View Full Code Here

        em.getTransaction().commit();
    }
   
    public void testForUpdateClauseAbsentInQueryWithFetchPlanNoneLockMode() {
        OpenJPAEntityManagerSPI em = emf.createEntityManager();
        em.getTransaction().begin();
       
        OpenJPAQuery<?> q = em.createNamedQuery("findEmployeeById").setParameter("id", 0);
        FetchPlan fp = q.getFetchPlan();
        fp.setReadLockMode(LockModeType.NONE);
        assertClauseAbsentInSQL(lockClause, q);
       
        q = em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0);
        fp = q.getFetchPlan();
        fp.setReadLockMode(LockModeType.NONE);
        assertClauseAbsentInSQL(lockClause, q);
       
        em.getTransaction().commit();
    }
View Full Code Here

        return entityManager;
    }

    private synchronized void registerListener(EntityManager entityManager) {
        if (entityManager instanceof OpenJPAEntityManagerSPI) {
            OpenJPAEntityManagerSPI openjpaEM = (OpenJPAEntityManagerSPI) entityManager;
            OpenJPAEntityManagerFactorySPI openjpaEMF = (OpenJPAEntityManagerFactorySPI) openjpaEM.getEntityManagerFactory();

            if (entityManagerListener == null) {
                entityManagerListener = new OpenJPALifecycleListener();
            }
            openjpaEMF.addLifecycleListener(entityManagerListener, (Class[])null);
View Full Code Here

   
    /*
     * Optimistic=true, lock mode = none set explicitly on the fetch plan.
     */
    public void testForUpdateClauseAbsentInQueryWithFetchPlanNoneLockMode() {
        OpenJPAEntityManagerSPI em = emf.createEntityManager();
        em.getTransaction().begin();
        lockClause = getForUpdateClause();       
        OpenJPAQuery<?> q = em.createNamedQuery("findEmployeeById").setParameter("id", 0);
        FetchPlan fp = q.getFetchPlan();
        fp.setReadLockMode(LockModeType.NONE);
        assertClauseAbsentInSQL(lockClause, q);
       
        q = em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0);
        fp = q.getFetchPlan();
        fp.setReadLockMode(LockModeType.NONE);
        assertClauseAbsentInSQL(lockClause, q);
       
        em.getTransaction().commit();
        em.close();
    }
View Full Code Here

        em.getTransaction().commit();
    }
   
    public void testForUpdateClauseAbsentInQueryWithFetchPlanNoneLockMode() {
        OpenJPAEntityManagerSPI em = emf.createEntityManager();
        em.getTransaction().begin();       
        lockClause = getForUpdateClause();
        OpenJPAQuery<?> q = em.createNamedQuery("findEmployeeById").setParameter("id", 0);
        FetchPlan fp = q.getFetchPlan();
        fp.setReadLockMode(LockModeType.NONE);
        assertClauseAbsentInSQL(lockClause, q);
       
        q = em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0);
        fp = q.getFetchPlan();
        fp.setReadLockMode(LockModeType.NONE);
        assertClauseAbsentInSQL(lockClause, q);
       
        em.getTransaction().commit();
    }
View Full Code Here

    public void testExtendedLockScope() throws Exception {
        Map<String, Object> props = new HashMap<String, Object>();
        props.put("javax.persistence.lock.scope", PessimisticLockScope.EXTENDED);

        OpenJPAEntityManagerSPI em1 = emf.createEntityManager();
        OpenJPAEntityManagerSPI em2 = emf.createEntityManager();
        CommitterThread committer = new CommitterThread(em2);

        em1.getTransaction().begin();
        Person e1 = em1.find(Person.class, 1);
        assertEquals(1, e1.getPhoneNumbers().size());
View Full Code Here

            _em2.close();
        }
    }

    private void populate() {
        OpenJPAEntityManagerSPI em = emf.createEntityManager();
        em.getTransaction().begin();

        PhoneNumber p = new PhoneNumber(_phone);
        List<PhoneNumber> numbers = Arrays.asList(new PhoneNumber[] { p });

        Person e1 = new Person();
        e1.setId(1);
        e1.setPhoneNumbers(numbers);
        Person e2 = new Person();
        e2.setId(2);
        e2.setPhoneNumbers(numbers);

        p.setOwners(Arrays.asList(new Person[] { e1, e2 }));
        em.persist(e1);
        em.persist(e2);
        em.persist(p);

        em.getTransaction().commit();
        em.close();
    }
View Full Code Here

     * Validates that an mapped superclass using field access and an
     * entity subclass using property access get mapped properly.
     * The subclass uses a storage field in the superclass.
     */
    public void testMappedSuperProperty() {
        OpenJPAEntityManagerSPI em = emf.createEntityManager();
       
        FieldSub2 fs = new FieldSub2();
        // Call super setter with underlying field access
        fs.setName("MappedSuperName");
        // Call base setter with property access
        Date now = new Date();
        fs.setCreateDate(now);
       
        em.getTransaction().begin();
        em.persist(fs);
        em.getTransaction().commit();
        em.clear();
       
        // This value of a persistent field was set using the setter
        // above, but this query will use the property name to verify that
        // propety access is in use.
        Query qry = em.createNamedQuery("FieldSub2.query");
        qry.setParameter("id", fs.getId());
        qry.setParameter("name", "MappedSuperName");
        qry.setParameter("crtDate", now);
        FieldSub2 fs2 =
            (FieldSub2)qry.getSingleResult();
        assertEquals(fs, fs2);
        assertEquals(fs2.getName(), "MappedSuperName");
        assertEquals(fs2.getCreateDate().toString(), now.toString());

        try {
            qry = em.createNamedQuery("FieldSub2.badQuery");
            qry.setParameter("id", fs.getId());
            qry.setParameter("name", "MappedSuperName");
            qry.setParameter("crtDate", now);
            qry.getSingleResult();
            fail("Usage of this query should have thrown an exception");
        }
        catch (Exception e) {
            assertExceptionMessage(e, ArgumentException.class,
                    "No field named \"createDate\" in \"FieldSub2\"",
                    "[crtDate, id, name]");
        }

        em.close();       
    }
View Full Code Here

TOP

Related Classes of org.apache.openjpa.persistence.OpenJPAEntityManagerSPI

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.