package org.dddlib.organisation.domain; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import java.util.Date; import java.util.List; @Entity @DiscriminatorValue("OrgLineMgmt") @NamedQueries({ @NamedQuery(name = "OrgLineMgmt.getParentOfOrganization", query = "select o.commissioner from OrgLineMgmt o where o.responsible = :organization and o.fromDate <= :date and o.toDate > :date"), @NamedQuery(name = "OrgLineMgmt.findChildrenOfOrganization", query = "select o.responsible from OrgLineMgmt o where o.commissioner = :organization and o.fromDate <= :date and o.toDate > :date"), @NamedQuery(name = "OrgLineMgmt.findByResponsible", query = "select o from OrgLineMgmt o where o.responsible = :organization and o.fromDate <= :date and o.toDate > :date") }) public class OrgLineMgmt extends Accountability<Organization, Organization> { private static final long serialVersionUID = 7390804525640459582L; protected OrgLineMgmt() { } public OrgLineMgmt(Organization parent, Organization child, Date date) { super(parent, child, date); } public static Organization getParentOfOrganization( Organization organization, Date date) { return getRepository().createNamedQuery("OrgLineMgmt.getParentOfOrganization") .addParameter("organization", organization).addParameter("date", date).singleResult(); } public static List<Organization> findChildrenOfOrganization( Organization organization, Date date) { return getRepository().createNamedQuery("OrgLineMgmt.findChildrenOfOrganization") .addParameter("organization", organization).addParameter("date", date).list(); } public static List<OrgLineMgmt> findAll() { return getRepository().findAll(OrgLineMgmt.class); } public static OrgLineMgmt getByResponsible(Organization responsible, Date date) { return getRepository().createNamedQuery("OrgLineMgmt.findByResponsible") .addParameter("organization", responsible).addParameter("date", date).singleResult(); } }