Package com.axelor.db

Class JpaRepository<T extends Model>

java.lang.Object
com.axelor.db.JpaRepository<T>
Type Parameters:
T - the type of bean class
All Implemented Interfaces:
Repository<T>
Direct Known Subclasses:
AbstractMetaJsonModelRepository, AbstractMFARepository, AbstractUserRepository, AbstractUserTokenRepository, AuditLogRepository, DMSFileRepository, DMSFileTagRepository, DMSPermissionRepository, GroupRepository, MailAddressRepository, MailFlagsRepository, MailFollowerRepository, MailMessageRepository, MetaActionMenuRepository, MetaActionRepository, MetaAttachmentRepository, MetaAttrsRepository, MetaEnumRepository, MetaFieldRepository, MetaFileRepository, MetaFilterRepository, MetaHelpRepository, MetaJsonFieldRepository, MetaJsonRecordRepository, MetaMenuRepository, MetaModelRepository, MetaModuleRepository, MetaPermissionRepository, MetaPermissionRuleRepository, MetaScheduleParamRepository, MetaScheduleRepository, MetaSelectItemRepository, MetaSelectRepository, MetaSequenceRepository, MetaThemeRepository, MetaTranslationRepository, MetaViewCustomRepository, MetaViewRepository, PasswordResetTokenRepository, PermissionRepository, RoleRepository, TeamRepository, TeamTaskRepository, TeamTopicRepository

public class JpaRepository<T extends Model> extends Object implements Repository<T>
The JPA implementation of the Repository.
  • Field Details

    • modelClass

      protected Class<T extends Model> modelClass
  • Constructor Details

    • JpaRepository

      protected JpaRepository(Class<T> modelClass)
  • Method Details

    • fields

      public List<Property> fields()
      Description copied from interface: Repository
      Return list of properties on the domain model managed by this repository.
      Specified by:
      fields in interface Repository<T extends Model>
      Returns:
      list of Property
    • all

      public Query<T> all()
      Description copied from interface: Repository
      Get the Query instance of the managed domain class.
      Specified by:
      all in interface Repository<T extends Model>
      Returns:
      instance of Query
    • all

      public <U extends T> Query<U> all(Class<U> type)
      Get the Query instance of the given type.
      Type Parameters:
      U - type of the model class
      Parameters:
      type - the subtype of the managed model class.
      Returns:
      instance of Query
    • create

      public T create(Map<String,Object> values)
      Description copied from interface: Repository
      Create a new instance of the domain model with the given default values.
      Specified by:
      create in interface Repository<T extends Model>
      Parameters:
      values - the default values
      Returns:
      an instance of the domain model managed by this repository
    • copy

      public T copy(T entity, boolean deep)
      Description copied from interface: Repository
      Create a duplicate copy of the given entity.

      In case of deep copy, one-to-many records are duplicated. Otherwise, one-to-many records will be skipped.
      Specified by:
      copy in interface Repository<T extends Model>
      Parameters:
      entity - the entity bean to copy
      deep - whether to create a deep copy
      Returns:
      a copy of the given entity
    • find

      public T find(Long id)
      Description copied from interface: Repository
      Finds an entity by its primary key.
      Specified by:
      find in interface Repository<T extends Model>
      Parameters:
      id - the entity id to load
      Returns:
      entity found by the given id, null otherwise
    • findById

      public Optional<T> findById(Long id)
      Description copied from interface: Repository
      Finds an entity by its primary key.
      Specified by:
      findById in interface Repository<T extends Model>
      Parameters:
      id - the entity id to load
      Returns:
      an Optional containing the found entity, or Optional#empty() if not found
    • getReferenceById

      public T getReferenceById(Long id)
      Description copied from interface: Repository
      Retrieves a reference (proxy) to an entity instance with the specified ID without immediately loading its state from the database.

      This method delegates to EntityManager.getReference(Class, Object). It is designed for performance optimization, particularly when you need to associate an entity (set a foreign key) without the overhead of a database SELECT query.

      Note: The returned object is likely a dynamic proxy. The database will only be accessed when you invoke a method on the proxy (other than getting the ID). If the entity does not exist in the database, an EntityNotFoundException will be thrown at the time of that access, not at the time of calling this method.

      Specified by:
      getReferenceById in interface Repository<T extends Model>
      Parameters:
      id - the primary key of the entity
      Returns:
      a managed entity proxy instance with the state lazily fetched
      See Also:
      • EntityManager.getReference(Class, Object)
    • findByIds

      public List<T> findByIds(List<Long> ids)
      Description copied from interface: Repository
      Find multiple entities by their primary key.

      WARNING: The list may contain NULL elements if an id was not found. The list size and order will match the input ids.

      Specified by:
      findByIds in interface Repository<T extends Model>
      Parameters:
      ids - The ids to load
      Returns:
      list of all the matched records
    • save

      public T save(T entity)
      Description copied from interface: Repository
      Save the given entity.

      Depending on the implementation, it may return same entity or a copy of it. For example JPA implementation may return a copy if the given entity can't be managed.

      Specified by:
      save in interface Repository<T extends Model>
      Parameters:
      entity - the entity object to save
      Returns:
      an instance of the entity with saved state
    • persist

      public void persist(T entity)
      Make an entity managed and persistent.
      Parameters:
      entity - the entity instance
      See Also:
      • EntityManager.persist(Object)
    • merge

      public T merge(T entity)
      Merge the state of the given entity into the current persistence context.
      Parameters:
      entity - the entity instance
      Returns:
      the managed instance
      See Also:
      • EntityManager.merge(Object)
    • remove

      public void remove(T entity)
      Description copied from interface: Repository
      Remove the given entity.
      Specified by:
      remove in interface Repository<T extends Model>
      Parameters:
      entity - the entity object
    • refresh

      public void refresh(T entity)
      Refresh the state of the instance from the database, overwriting changes made to the entity, if any.
      Specified by:
      refresh in interface Repository<T extends Model>
      Parameters:
      entity - the entity instance
      See Also:
      • EntityManager.refresh(Object)
    • flush

      public void flush()
      Synchronize the persistence context to the underlying database.
      Specified by:
      flush in interface Repository<T extends Model>
      See Also:
      • EntityManager.flush()
    • validate

      public Map<String,Object> validate(Map<String,Object> json, Map<String,Object> context)
      Description copied from interface: Repository
      Validate the given json map before persisting.

      This method is called before the json map is converted to model object.

      Specified by:
      validate in interface Repository<T extends Model>
      Parameters:
      json - the json map to validate
      context - the context
      Returns:
      validated json map
    • populate

      public Map<String,Object> populate(Map<String,Object> json, Map<String,Object> context)
      Description copied from interface: Repository
      Populate the given json map with additional data.

      This method is called before returning the json data as response.

      Specified by:
      populate in interface Repository<T extends Model>
      Parameters:
      json - the json map to populate
      context - the context
      Returns:
      the json map itself
    • of

      public static <U extends Model> JpaRepository<U> of(Class<U> type)