void refresh(
Object entity,
RefreshOption... options
)
Refresh the state of the given managed entity instance from the database, using the specified plain, overwriting changes made to the entity, if any. If the supplied options include a LockModeType, lock the given entity, obtaining the given lock mode. This operation cascades to every entity related by an association marked cascade=REFRESH.
If the lock mode type is pessimistic and the entity instance is found but cannot be locked:
- the PessimisticLockException is thrown if the database locking failure causes transaction-level rollback
- the LockTimeoutException is thrown if the database locking failure causes only statement-level rollback.
If a vendor-specific RefreshOption is not recognized, it is silently ignored.
Portable applications should not rely on the standard plain. Depending on the database in use and the locking mechanisms used by the provider, the hint may or may not be observed.
- Parameters:
entity
- a managed entity instanceoptions
- standard and vendor-specific options
- Throws:
- IllegalArgumentException - if the instance is not an entity or if the entity is not managed
- TransactionRequiredException - if invoked on a container-managed entity manager of type {@link PersistenceContextType#TRANSACTION} when there is no transaction; if invoked on an extended entity manager when there is no transaction and a lock mode other than {@link LockModeType#NONE} was specified; or if invoked on an extended entity manager that has not been joined to the current transaction and any lock mode other than {@code NONE} was specified
- EntityNotFoundException - if the entity no longer exists in the database
- PessimisticLockException - if pessimistic locking fails and the transaction is rolled back
- LockTimeoutException - if pessimistic locking fails and only the statement is rolled back
- PersistenceException - if an unsupported lock call is made
- TransactionRequiredException - if invoked on a container-managed entity manager of type {@link PersistenceContextType#TRANSACTION} when there is no transaction; if invoked on an extended entity manager when there is no transaction and a lock mode other than {@link LockModeType#NONE} was specified; or if invoked on an extended entity manager that has not been joined to the current transaction and any lock mode other than {@code NONE} was specified
- Since:
- JPA 3.2