Search in sources :

Example 16 with Query

use of com.haulmont.cuba.core.Query in project cuba by cuba-platform.

the class SoftDeleteTest method testOneToMany_Query.

@Test
public void testOneToMany_Query() {
    System.out.println("===================== BEGIN testOneToMany_Query =====================");
    Transaction tx = cont.persistence().createTransaction();
    try {
        EntityManager em = cont.persistence().getEntityManager();
        Query q = em.createQuery("select u from sec$User u where u.id = ?1");
        q.setParameter(1, userId);
        User user = (User) q.getSingleResult();
        List<UserRole> userRoles = user.getUserRoles();
        assertEquals(1, userRoles.size());
        for (UserRole ur : userRoles) {
            assertNotNull(ur.getRole());
        }
        tx.commit();
    } finally {
        tx.end();
    }
    System.out.println("===================== END testOneToMany_Query =====================");
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) Transaction(com.haulmont.cuba.core.Transaction) Query(com.haulmont.cuba.core.Query)

Example 17 with Query

use of com.haulmont.cuba.core.Query in project cuba by cuba-platform.

the class EntityCacheTestClass method testUpdateQuery.

@Test
public void testUpdateQuery() throws Exception {
    appender.clearMessages();
    loadUser();
    // User, Group
    assertEquals(2, appender.filterMessages(m -> m.contains("> SELECT")).count());
    appender.clearMessages();
    try (Transaction tx = cont.persistence().createTransaction()) {
        Query query = cont.entityManager().createQuery("update sec$User u set u.position = ?1 where u.loginLowerCase = ?2");
        query.setParameter(1, "new position");
        query.setParameter(2, this.user.getLoginLowerCase());
        query.executeUpdate();
        tx.commit();
    }
    appender.clearMessages();
    User u = loadUser();
    assertEquals("new position", u.getPosition());
    // Group
    assertEquals(1, appender.filterMessages(m -> m.contains("> SELECT")).count());
}
Also used : Transaction(com.haulmont.cuba.core.Transaction) Query(com.haulmont.cuba.core.Query) TypedQuery(com.haulmont.cuba.core.TypedQuery)

Example 18 with Query

use of com.haulmont.cuba.core.Query in project cuba by cuba-platform.

the class EntityCacheTestClass method testAccessConnectionWithCacheInvalidation.

@Test
@Ignore
public void testAccessConnectionWithCacheInvalidation() {
    appender.clearMessages();
    try (Transaction tx = cont.persistence().createTransaction()) {
        cont.persistence().getEntityManager().getConnection();
        ViewRepository viewRepository = AppBeans.get(ViewRepository.class);
        View view = viewRepository.getView(cont.metadata().getClassNN(User.class), "user.browse");
        cont.entityManager().find(User.class, this.user.getId(), view);
        tx.commit();
    }
    // User, Group
    assertEquals(2, appender.filterMessages(m -> m.contains("> SELECT")).count());
    appender.clearMessages();
    try (Transaction tx = cont.persistence().createTransaction()) {
        cont.persistence().getEntityManager().getConnection();
        ViewRepository viewRepository = AppBeans.get(ViewRepository.class);
        View view = viewRepository.getView(cont.metadata().getClassNN(User.class), "user.browse");
        cont.entityManager().find(User.class, this.user.getId(), view);
        tx.commit();
    }
    // User, Group
    assertEquals(0, appender.filterMessages(m -> m.contains("> SELECT")).count());
    appender.clearMessages();
    try (Transaction tx = cont.persistence().createTransaction(new TransactionParams().setReadOnly(true))) {
        try (Transaction tx1 = cont.persistence().getTransaction()) {
            cont.persistence().getEntityManager().getConnection();
            tx1.commit();
        }
        ViewRepository viewRepository = AppBeans.get(ViewRepository.class);
        View view = viewRepository.getView(cont.metadata().getClassNN(User.class), "user.browse");
        Query query = cont.entityManager().createQuery("select u from sec$User u where u.id = :id").setParameter("id", user.getId());
        query.setView(View.copy(view).setLoadPartialEntities(true));
        ((QueryImpl) query).setSingleResultExpected(true);
        User userL = (User) query.getSingleResult();
        // User userL = cont.entityManager().find(User.class, user.getId(), view);
        assertNotNull(userL);
        tx.commit();
    }
    // User, Group
    assertEquals(0, appender.filterMessages(m -> m.contains("> SELECT")).count());
}
Also used : TransactionParams(com.haulmont.cuba.core.TransactionParams) QueryImpl(com.haulmont.cuba.core.sys.QueryImpl) Transaction(com.haulmont.cuba.core.Transaction) Query(com.haulmont.cuba.core.Query) TypedQuery(com.haulmont.cuba.core.TypedQuery)

Example 19 with Query

use of com.haulmont.cuba.core.Query in project cuba by cuba-platform.

the class EntityCacheTestClass method testQuery.

@Test
public void testQuery() throws Exception {
    appender.clearMessages();
    User u1, u2;
    List<User> list;
    try (Transaction tx = cont.persistence().createTransaction()) {
        TypedQuery<User> query = cont.entityManager().createQuery("select u from sec$User u where u.login like ?1", User.class);
        query.setParameter(1, "ECTest%");
        query.setViewName("user.browse");
        list = query.getResultList();
        tx.commit();
    }
    u1 = list.stream().filter(u -> u.getId().equals(this.user.getId())).findFirst().get();
    assertEquals(this.user.getLogin(), u1.getLogin());
    assertEquals(this.group, u1.getGroup());
    u2 = list.stream().filter(user -> user.getId().equals(this.user2.getId())).findFirst().get();
    assertEquals(this.user2.getLogin(), u2.getLogin());
    assertEquals(this.group, u2.getGroup());
    // User, Group
    assertEquals(2, appender.filterMessages(m -> m.contains("> SELECT")).count());
    appender.clearMessages();
    try (Transaction tx = cont.persistence().createTransaction()) {
        TypedQuery<User> query = cont.entityManager().createQuery("select u from sec$User u where u.login like ?1", User.class);
        query.setParameter(1, "ECTest%");
        query.setViewName("user.browse");
        list = query.getResultList();
        tx.commit();
    }
    u1 = list.stream().filter(u -> u.getId().equals(this.user.getId())).findFirst().get();
    assertEquals(this.user.getLogin(), u1.getLogin());
    assertEquals(this.group, u1.getGroup());
    u2 = list.stream().filter(user -> user.getId().equals(this.user2.getId())).findFirst().get();
    assertEquals(this.user2.getLogin(), u2.getLogin());
    assertEquals(this.group, u2.getGroup());
    // User only
    assertEquals(1, appender.filterMessages(m -> m.contains("> SELECT")).count());
}
Also used : Query(com.haulmont.cuba.core.Query) Arrays(java.util.Arrays) TestRule(org.junit.rules.TestRule) LoggerFactory(org.slf4j.LoggerFactory) TransactionParams(com.haulmont.cuba.core.TransactionParams) LoggerContext(ch.qos.logback.classic.LoggerContext) com.haulmont.cuba.core.global(com.haulmont.cuba.core.global) TypedQuery(com.haulmont.cuba.core.TypedQuery) EntityManagerFactoryDelegate(org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate) QueryImpl(com.haulmont.cuba.core.sys.QueryImpl) ServerSession(org.eclipse.persistence.sessions.server.ServerSession) com.haulmont.cuba.security.entity(com.haulmont.cuba.security.entity) TestAppender(com.haulmont.cuba.testsupport.TestAppender) TestSupport.assertFail(com.haulmont.cuba.testsupport.TestSupport.assertFail) List(java.util.List) Logger(ch.qos.logback.classic.Logger) EntityManagerFactory(javax.persistence.EntityManagerFactory) AppContext(com.haulmont.cuba.core.sys.AppContext) ClassDescriptor(org.eclipse.persistence.descriptors.ClassDescriptor) Transaction(com.haulmont.cuba.core.Transaction) JpaCache(org.eclipse.persistence.jpa.JpaCache) org.junit(org.junit) TestNamePrinter(com.haulmont.cuba.testsupport.TestNamePrinter) Assert(org.junit.Assert) TestSupport.reserialize(com.haulmont.cuba.testsupport.TestSupport.reserialize) TestContainer(com.haulmont.cuba.testsupport.TestContainer) Transaction(com.haulmont.cuba.core.Transaction)

Example 20 with Query

use of com.haulmont.cuba.core.Query in project cuba by cuba-platform.

the class QueryCacheTestClass method testNotEntityQuery.

@Test
public void testNotEntityQuery() throws Exception {
    appender.clearMessages();
    assertEquals(0, queryCache.size());
    try (Transaction tx = cont.persistence().createTransaction()) {
        EntityManager em = cont.entityManager();
        Query query = em.createQuery("select u, u.name from sec$User u where u.login = :login");
        query.setCacheable(true);
        query.setParameter("login", "ECTest-" + user.getId());
        query.getResultList();
        tx.commit();
    }
    assertEquals(0, queryCache.size());
    try (Transaction tx = cont.persistence().createTransaction()) {
        EntityManager em = cont.entityManager();
        Query query = em.createQuery("select u.name from sec$User u where u.login = :login");
        query.setCacheable(true);
        query.setParameter("login", "ECTest-" + user.getId());
        query.getResultList();
        tx.commit();
    }
    assertEquals(0, queryCache.size());
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) Transaction(com.haulmont.cuba.core.Transaction) Query(com.haulmont.cuba.core.Query) TypedQuery(com.haulmont.cuba.core.TypedQuery)

Aggregations

Query (com.haulmont.cuba.core.Query)42 EntityManager (com.haulmont.cuba.core.EntityManager)27 Transaction (com.haulmont.cuba.core.Transaction)25 TypedQuery (com.haulmont.cuba.core.TypedQuery)12 Entity (com.haulmont.cuba.core.entity.Entity)7 List (java.util.List)6 MetaProperty (com.haulmont.chile.core.model.MetaProperty)5 MetaClass (com.haulmont.chile.core.model.MetaClass)3 Date (java.util.Date)3 TransactionParams (com.haulmont.cuba.core.TransactionParams)2 com.haulmont.cuba.core.global (com.haulmont.cuba.core.global)2 QueryImpl (com.haulmont.cuba.core.sys.QueryImpl)2 User (com.haulmont.cuba.security.entity.User)2 After (org.junit.After)2 Transactional (org.springframework.transaction.annotation.Transactional)2 Logger (ch.qos.logback.classic.Logger)1 LoggerContext (ch.qos.logback.classic.LoggerContext)1 StringHelper (com.haulmont.bali.util.StringHelper)1 EnumClass (com.haulmont.chile.core.datatypes.impl.EnumClass)1 PersistenceSecurity (com.haulmont.cuba.core.PersistenceSecurity)1