I am getting the deadlock found when trying to get lock; try restarting transaction exception while executing my below code
for(Map.Entry<Area, List<FranchiseTimeSlots>> entry : areaFranchiseTimeSlotsMap.entrySet()) {
Transaction txn = sessionFactory.getCurrentSession().beginTransaction();
Area area = entry.getKey();
List<FranchiseTimeSlots> franchiseTimeSlotsList = entry.getValue();
List<Integer> franchiseTimeSlotIds = new ArrayList<>();
franchiseTimeSlotsList.forEach(x -> franchiseTimeSlotIds.add(x.getId()));
String queryString = "Delete from franchise_timeslot_areas fta where fta.FRANCHISE_TIMESLOT in (:franchiseTimeSlotIds) AND fta.AREA =:areaID";
Query query = sessionFactory.getCurrentSession().createNativeQuery(queryString);
query.setParameter("areaID",area.getId());
query.setParameterList("franchiseTimeSlotIds",franchiseTimeSlotIds);
query.executeUpdate();
String updateQueryString = "update franchise_timeslot ft set ft.UPDATED_DATE=:date,ft.UPDATED_BY=:userID where ft.ID in (:franchiseTimeSlotsIds)";
Query query1 = sessionFactory.getCurrentSession().createNativeQuery(updateQueryString);
query1.setParameter("userID",user.getId());
query1.setParameter("date",new Date());
query1.setParameterList("franchiseTimeSlotsIds",franchiseTimeSlotIds);
query1.executeUpdate();
txn.commit();