All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.datafx.crud.jpa.JpaDeleteCall Maven / Gradle / Ivy

package org.datafx.crud.jpa;

import org.datafx.util.EntityWithId;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.PersistenceException;
import java.util.function.Supplier;

public class JpaDeleteCall, T> extends JpaCall {

    private Class entityClass;

    public JpaDeleteCall(Supplier managerSupplier, Class entityClass) {
        super(managerSupplier);
        this.entityClass = entityClass;
    }

    public JpaDeleteCall(EntityManager manager, Class entityClass) {
        this(() -> manager, entityClass);
    }

    @Override
    public Void call(T id) throws Exception {
        EntityTransaction transaction = getManager().getTransaction();
        try {
            transaction.begin();
            S entity = getManager().find(entityClass, id);
            getManager().remove(entity);
            transaction.commit();
            return null;
        } catch (PersistenceException e) {
            transaction.rollback();
            throw new PersistenceException("Rollback on entity delete", e);
        }
    }
}