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 }