package com.l7tech.server.util;

import jakarta.persistence.FlushModeType;
import java.sql.SQLException;
import org.hibernate.FlushMode;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate5.HibernateCallback;

public abstract class ReadOnlyHibernateCallback<RT> implements HibernateCallback<RT> {
   public RT doInHibernate(Session var1) throws HibernateException {
      FlushModeType var2 = var1.getFlushMode();

      try {
         var1.setFlushMode(FlushMode.MANUAL);
         return this.doInHibernateReadOnly(var1);
      } catch (SQLException var7) {
         throw new HibernateException(var7);
      } finally {
         var1.setFlushMode(var2);
      }
   }

   protected abstract RT doInHibernateReadOnly(Session var1) throws HibernateException, SQLException;
}
