## org.springframework.orm.jpa
Interface JpaCallback<T>

    public interface JpaCallback<T>

Callback interface for JPA code. To be used with `JpaTemplate`'s execution method, often as anonymous classes within a method implementation. A typical implementation will call `EntityManager.find/merge` to perform some operations on persistent objects.

Since:
  2.0
Author:
  Juergen Hoeller
See Also:
  `JpaTemplate`, `JpaTransactionManager`

Method Summary
`T` `doInJpa(javax.persistence.EntityManager em)` Gets called by `JpaTemplate.execute` with an active JPA `EntityManager`.

Method Detail

### doInJpa

    T doInJpa(javax.persistence.EntityManager em)
              throws javax.persistence.PersistenceException

  Gets called by `JpaTemplate.execute` with an active JPA `EntityManager`. Does not need to care about activating or closing the `EntityManager`, or handling transactions.

  Note that JPA callback code will not flush any modifications to the database if not executed within a transaction. Thus, you need to make sure that JpaTransactionManager has initiated a JPA transaction when the callback gets called, at least if you want to write to the database.

  Allows for returning a result object created within the callback, i.e. a domain object or a collection of domain objects. A thrown custom RuntimeException is treated as an application exception: It gets propagated to the caller of the template.

  Parameters:
    `em` - active EntityManager
  Returns:
    a result object, or `null` if none
  Throws:
    `javax.persistence.PersistenceException` - if thrown by the JPA API
  See Also:
    `JpaTemplate.execute(org.springframework.orm.jpa.JpaCallback<T>)`, `JpaTemplate.executeFind(org.springframework.orm.jpa.JpaCallback<?>)`