Fixing RoleMembershipImExporter

deploy_packages_to_gitea
Jens Pelzetter 2022-10-23 12:08:01 +02:00
parent 283049f8e9
commit aef849ece8
2 changed files with 41 additions and 14 deletions

View File

@ -73,19 +73,6 @@ public class CategoryIdResolver implements Serializable, ObjectIdResolver {
.save(category);
return category;
}
//
// return CdiUtil
// .createCdiUtil()
// .findBean(CategoryRepository.class)
// .findByUuid(id.key.toString())
// .orElseThrow(
// () -> new IllegalArgumentException(
// String.format(
// "No Category with UUID %s in the database.",
// id.key.toString()
// )
// )
// );
}
@Override

View File

@ -23,12 +23,17 @@ import org.libreccm.imexport.Exportable;
import org.libreccm.imexport.Processes;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import javax.transaction.Transactional;
/**
@ -51,7 +56,42 @@ public class RoleMembershipImExporter
@Override
@Transactional(Transactional.TxType.REQUIRED)
protected void saveImportedEntity(final RoleMembership entity) {
entityManager.persist(entity);
final CriteriaBuilder criteriaBuilder = entityManager
.getCriteriaBuilder();
final CriteriaQuery<RoleMembership> criteriaQuery = criteriaBuilder
.createQuery(RoleMembership.class);
final Root<RoleMembership> from = criteriaQuery.from(
RoleMembership.class
);
criteriaQuery.where(
criteriaBuilder.equal(
from.get("role"),
entity.getRole()
)
);
criteriaQuery.where(
criteriaBuilder.equal(
from.get("member"),
entity.getMember()
)
);
final TypedQuery<RoleMembership> query = entityManager.createQuery(
criteriaQuery
);
final List<RoleMembership> results = query.getResultList();
if (results.isEmpty()) {
final RoleMembership membership = new RoleMembership();
membership.setUuid(entity.getUuid());
membership.setMember(entity.getMember());
membership.setRole(entity.getRole());
entityManager.persist(membership);
}
// if (entity.getMembershipId() == 0) {
// entityManager.persist(entity);
// } else {
// entityManager.merge(entity);
// }
}
@Override