package org.dddlib.organisation.domain; import org.apache.commons.lang3.builder.ToStringBuilder; import javax.persistence.*; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; @Entity @DiscriminatorValue("Post") @NamedQueries( @NamedQuery(name = "Party.findByOrganization", query = "select o from Post o where o.organization = :organization and o.createDate <= :date and o.terminateDate > :date")) public class Post extends Party { private static final long serialVersionUID = -2205967098970951498L; @ManyToOne @JoinColumn(name = "org_id") private Organization organization; @ManyToOne @JoinColumn(name = "job_id") private Job job; public Post() { super(); } public Post(String name) { super(name); } public Organization getOrganization() { return organization; } public void setOrganization(Organization organization) { this.organization = organization; } public Job getJob() { return job; } public void setJob(Job job) { this.job = job; } public static List<Post> findByOrganization(Organization organization, Date date) { return getRepository().createNamedQuery("Party.findByOrganization") .addParameter("organization", organization).addParameter("date", date).list(); } public Set<Employee> getEmployees(Date date) { return new HashSet<Employee>(PostHolding.findEmployeesOfPost(this, date)); } @Override public String toString() { return new ToStringBuilder(this).append(getName()).build(); } }