void refresh(
Object entity,
LockModeType lockMode,
Map<String,Object> properties
)
Refresh the state of the instance from the database, overwriting changes made to the entity, if any, and lock it with respect to given lock mode type and with specified properties.
If the lock mode type is pessimistic and the entity instance is found but cannot be locked:
- the
PessimisticLockException
will be thrown if the database locking failure causes transaction-level rollback - the
LockTimeoutException
will be thrown if the database locking failure causes only statement-level rollback
If a vendor-specific property or hint is not recognized, it is silently ignored.
Portable applications should not rely on the standard timeout hint. Depending on the database in use and the locking mechanisms used by the provider, the hint may or may not be observed.
- Parameters:
entity
- entity instancelockMode
- lock modeproperties
- standard and vendor-specific properties and hints
- Throws:
- IllegalArgumentException - if the instance is not an entity or the entity is not managed
- TransactionRequiredException - if invoked on a container-managed entity manager of type
PersistenceContextType.TRANSACTION
when there is no transaction; if invoked on an extended entity manager when there is no transaction and a lock mode other thanNONE
has been specified; or if invoked on an extended entity manager that has not been joined to the current transaction and a lock mode other thanNONE
has been 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
- Since:
- JPA 2.0