View Javadoc
1   package io.extact.rms.application.persistence.jpa;
2   
3   import io.extact.rms.application.domain.RentalItem;
4   import io.extact.rms.application.persistence.GenericRepository.ApiType;
5   import io.extact.rms.application.persistence.RentalItemRepository;
6   import io.extact.rms.platform.extension.EnabledIfRuntimeConfig;
7   import jakarta.enterprise.context.ApplicationScoped;
8   import jakarta.persistence.EntityManager;
9   import jakarta.persistence.NoResultException;
10  import jakarta.persistence.PersistenceContext;
11  
12  @ApplicationScoped
13  @EnabledIfRuntimeConfig(propertyName = ApiType.PROP_NAME, value = ApiType.JPA)
14  public class RentalItemJpaRepository extends JpaCrudRepository<RentalItem> implements RentalItemRepository {
15  
16      @PersistenceContext
17      private EntityManager em;
18  
19      @Override
20      public RentalItem findBySerialNo(String serialNo) {
21          var jpql = "select r from RentalItem r where r.serialNo = ?1";
22          try {
23              return em.createQuery(jpql, RentalItem.class)
24                          .setParameter(1, serialNo)
25                          .getSingleResult();
26          } catch (NoResultException e) {
27              return null;
28          }
29      }
30  
31      @Override
32      public EntityManager getEntityManage() {
33          return this.em;
34      }
35  
36      @Override
37      public Class<RentalItem> getTargetClass() {
38          return RentalItem.class;
39      }
40  }