Я новичок в использовании весенней загрузки и JPA с кешем (кеш 1-го и 2-го уровня)
У меня в проекте настроен весенний загрузчик стартера и JPA.
Я пытаюсь использовать кэш первого уровня. но это не работает.
@Service
public class CacheService {
@Autowired
EntityManagerFactory emf;
public CacheEntity getAll(){
EntityManager em =emf.createEntityManager();
EntityTransaction emt = em.getTransaction();
emt.begin();
CacheEntity trainer = em.find(CacheEntity.class, "TRAINER-0005");
CacheEntity trainer1 =em.find(CacheEntity.class, "TRAINER-0005");
emt.commit();
em.close();
return trainer;
}
}
Вот мой класс сущности определяется как:
@Entity
@Table(name = "TRAINER")
public class CacheEntity {
@Id
@Column(name = "TRAINIID")
private String trainiId;
@Column(name = "FIRSTNAME")
private String trinifirstname;
@Column(name = "LASTNAME")
private String trainilastname;
@Column(name = "PHONENUMBER")
private String trainiphno;
@Column(name = "STATE")
private String trainistate;
@Column(name = "CITY")
private String trainicity;
@Column(name = "QUALIFICATION")
private String trainiqualification;
}
Я пытаюсь получить данные из базы данных с тем же первичным ключом, но запрос выполняется дважды, поскольку вы, любой из вас, знаете, какую ошибку я допустил, исправьте меня.
Hibernate: выберите cacheentit0_.TRAINIID в TRAINIID1_12_0_, cacheentit0_.CITY как CITY2_12_0_, cacheentit0_.LASTNAME как LASTNAME3_12_0_, cacheentit0_.PHONENUMBER как PHONENUM4_12_0_, cacheentit0_.QUALIFICATION как QUALIFIC5_12_0_, cacheentit0_.STATE как STATE6_12_0_, cacheentit0_.FIRSTNAME как FIRSTNAM7_12_0_ от cacheentit0_ трейнер где cacheentit0_.TRAINIID =?
Hibernate: выберите cacheentit0_.TRAINIID в TRAINIID1_12_0_, cacheentit0_.CITY как CITY2_12_0_, cacheentit0_.LASTNAME как LASTNAME3_12_0_, cacheentit0_.PHONENUMBER как PHONENUM4_12_0_, cacheentit0_.QUALIFICATION как QUALIFIC5_12_0_, cacheentit0_.STATE как STATE6_12_0_, cacheentit0_.FIRSTNAME как FIRSTNAM7_12_0_ от cacheentit0_ трейнер где cacheentit0_.TRAINIID =?