Jakarta Persistence (JPA) Method
T find(
EntityGraph<T> entityGraph,
Object primaryKey,
FindOption... options
)
Find an instance of the root entity of the given
EntityGraph<T> by primary key, using the specified options, and interpreting the EntityGraph as a load graph. Search for an entity with the specified type and primary key. If the given options include a LockModeType, lock it with respect to the specified lock type. If the entity instance is contained in the persistence context, it is returned from there. If the entity is found within the persistence context and the lock mode type is pessimistic and the entity has a version attribute, the persistence provider must perform optimistic version checks when obtaining the database lock. If these checks fail, the OptimisticLockException is thrown.
If the lock mode type is pessimistic and the entity instance is found but cannot be locked:
- the
PessimisticLockExceptionis thrown if the database locking failure causes transaction-level rollback - the
LockTimeoutExceptionis thrown if the database locking failure causes only statement-level rollback
If a vendor-specific option is not recognized, it is silently ignored.
Portable applications should not rely on the standard timeout option. Depending on the database in use and the locking mechanisms used by the provider, this option may or may not be observed.
- Parameters:
options- standard and vendor-specific optionsentityGraph- entity graph interpreted as a load graphprimaryKey- primary key
- Returns:
- the found entity instance or null if the entity does not exist.
- Throws:
- if pessimistic locking fails and the transaction is rolled back.PessimisticLockException- if pessimistic locking fails and only the statement is rolled back.LockTimeoutException- if there are contradictory options, if the first argument does not denote an entity type belonging to the persistence unit, or if the second argument is not a valid non-null instance of the entity primary key type.IllegalArgumentException- if an unsupported lock call is made.PersistenceException- if the optimistic version check fails.OptimisticLockException- if there is no transaction and a lock mode other thanTransactionRequiredExceptionNONEis specified or if invoked on an entity manager which has not been joined to the current transaction and a lock mode other thanNONEis specified.
- Since:
- Jakarta Persistence (JPA) 3.2