Why doesn't the delete method of a Hibernate session object work?

Why the method of deleting a session object does not work in GenericDAOImpl.java, neither its exception, nor its display of any output. All other methods work fine expect public void delete(T object), Please help me, Sorry if I asked this question incorrectly.

public class GenericDAOImpl<T> implements IGenericDAO<T> {
private SessionFactory sessionFactory;

public GenericDAOImpl(Class<T> cl, SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
    if (sessionFactory == null)
        throw new RuntimeException("Session factory is null!!!");
}

@Override
public T get(Class<T> cl, Long id) {
    Session session = sessionFactory.getCurrentSession();
    session.beginTransaction();
    @SuppressWarnings("unchecked")
    T element = (T) session.get(cl, id);
    session.getTransaction().commit();
    return element;
}

@Override
public T get(Class<T> cl, Serializable obj) {
    Session session = sessionFactory.getCurrentSession();
    session.beginTransaction();     
    @SuppressWarnings("unchecked")   
    T element = (T) session.get(cl, obj);
    session.getTransaction().commit();
    return element;
}

@Override
public T save(T object) {
    Session session = sessionFactory.getCurrentSession();
    session.beginTransaction();
    session.save(object);
    session.getTransaction().commit();
    return object;
}

@Override
public void update(T object) {
    Session session = sessionFactory.getCurrentSession();
    session.beginTransaction();
    session.update(object);
    session.getTransaction().commit();
}

@Override
public void delete(T object) {
    Session session = sessionFactory.getCurrentSession();
    session.beginTransaction();
    session.delete(object);
    session.getTransaction().commit();
}

@SuppressWarnings("unchecked")
@Override   
public T findUniqueByQuery(String hsql, Map<String, Object> params) {
    Session session = sessionFactory.getCurrentSession();
    session.beginTransaction();
    Query query = session.createQuery(hsql);
    if (params != null) {
        for (String i : params.keySet()) {
            query.setParameter(i, params.get(i));
        }
    }
    return (T) query.uniqueResult();
}

@SuppressWarnings("unchecked")
@Override
public List<T> query(String hsql, Map<String, Object> params) {
    Session session = sessionFactory.getCurrentSession();
    session.beginTransaction();
    Query query = session.createQuery(hsql);
    if (params != null) {
        for (String i : params.keySet()) {
            query.setParameter(i, params.get(i));
        }
    }

    List<T> result = null;
    if ((hsql.toUpperCase().indexOf("DELETE") == -1)
            && (hsql.toUpperCase().indexOf("UPDATE") == -1)
            && (hsql.toUpperCase().indexOf("INSERT") == -1)) {
        result = query.list();
    } else {
    }
    session.getTransaction().commit();

    return result;
    }

}
+4
source share
3 answers

As noted in the comments, you ran into

org.hibernate.TransactionException: nested transactions do not support exception

This is because you started a transaction and you never committed or refused an exception.

I see one of them in code. See code below

@SuppressWarnings ("checkbox")

@Override   
public T findUniqueByQuery(String hsql, Map<String, Object> params) {
    Session session = sessionFactory.getCurrentSession();
    session.beginTransaction();
    Query query = session.createQuery(hsql);
    if (params != null) {
        for (String i : params.keySet()) {
            query.setParameter(i, params.get(i));
        }
    }
    return (T) query.uniqueResult();
}

, . .

+2

. . namedQuery :

Query query = session.getNamedQuery(EmployeeNQ.DELETE_EMPLOYEES);
int rows = query.executeUpdate();
session.close();

2 , . :

Transaction transaction = session.beginTransaction();
Query query = session.getNamedQuery(EmployeeNQ.DELETE_EMPLOYEES);
int rows = query.executeUpdate();
transaction.commit();
session.close();

. SQL-. , h2 ( ), .

+2
org.hibernate.TransactionException: nested transactions not supported exception

, , .

+1

Source: https://habr.com/ru/post/1609509/


All Articles