diff --git a/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java b/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java index e075d94..83b6762 100644 --- a/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java +++ b/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java @@ -96,10 +96,20 @@ public class DomainModuleImpl extends AbstractModuleImpl { DomainOption domainOption = new DomainOption(); domainOption.setName("greylisting"); domainOptions.add(domainOption); + EntityManager em = getTransaction().getEntityManager(); + Query q = em.createQuery("SELECT opt FROM " + + DomainOption.class.getAnnotation(javax.persistence.Entity.class).name() + + " opt WHERE opt.name=:optName"); + for (DomainOption opt : domainOptions) { + q.setParameter("optName", opt.getName()); + List list = q.getResultList(); + if (list.size() != 1) { + throw new HSAdminException("invalid domain option: " + opt.getName()); + } else { + opt.setId(((DomainOption) list.get(0)).getId()); + } dom.setDomainoptions(domainOptions); - EntityManager em = getTransaction().getEntityManager(); - UnixUser loginUser = getTransaction().getLoginUser(); if (!loginUser.hasHostmasterRole()) { // search for domains superior to dom