query

@Suspendable
@NotNull
abstract fun <T> query(@NotNull queryName: String, @NotNull entityClass: Class<T>): ParameterizedQuery<T>

Creates a ParameterizedQuery to support a named query to return a list of entities of the given type in a single transaction. Casts result set to the specified type [T].

Example usage:

  • Kotlin:
    
    // For JPA Entity:
    
    
    
    = "DOGS")
    = "find_by_name_and_age", query = "SELECT d FROM Dog d WHERE d.name = :name AND d.age <= :maxAge")
    class Dog {
        
        private val id: UUID? = null
    
        = "DOG_NAME", length = 50, nullable = false, unique = false)
        private val name: String? = null
    
        = "DOG_AGE")
        private val age: Int? = null // getters and setters
        // ...
    }
    
    // Create a named query that returns pages of up to 100 records
    val pagedQuery = persistenceService
        .query("find_by_name_and_age", Dog::class.java)
        .setParameter("name", "Felix")
        .setParameter("maxAge", 5)
        .setLimit(100)
        .setOffset(0)
    
    // Execute the query and return a ResultSet
    val resultSet = pagedQuery.execute()
    
    processResultsWithApplicationLogic(resultSet.results)
    
    while (resultSet.hasNext()) {
        val results = resultSet.next()
        processResultsWithApplicationLogic(results)
    }
    
  • Java:
    
    // For JPA Entity:
    
    
    = "DOGS")
    = "find_by_name_and_age", query = "SELECT d FROM Dog d WHERE d.name = :name AND d.age <= :maxAge")
    class Dog {
        
        private UUID id;
        = "DOG_NAME", length = 50, nullable = false, unique = false)
        private String name;
        = "DOG_AGE")
        private Integer age;
    
        // getters and setters
         ...
    }
    
    // Create a named query that returns pages of up to 100 records
    ParameterizedQuery<Dog> pagedQuery = persistenceService
            .query("find_by_name_and_age", Dog.class)
            .setParameter("name", "Felix")
            .setParameter("maxAge", 5)
            .setLimit(100)
            .setOffset(0);
    
    // Execute the query and return a ResultSet
    ResultSet<Dog> resultSet = pagedQuery.execute();
    
    processResultsWithApplicationLogic(resultSet.getResults());
    
    while (resultSet.hasNext()) {
        List<Integer> results = resultSet.next();
        processResultsWithApplicationLogic(results);
    }
    

Return

A ParameterizedQuery that returns the list of entities found. Empty list if none were found.

Parameters

queryName

The name of the named query registered in the persistence context.

entityClass

The type of the entities to find.

<T>

The type of the results.

Throws

If entityClass is a primitive type.