@Entity
@Table(name="EMP")
@Inheritance
@DiscriminatorColumn(name="EMP_TYPE") public abstract class Professor {
@Id private int id; private String name;
@Temporal(TemporalType.DATE)
@Column(name="S_DATE") private Date startDate;
public int getId() { return id;
}
public void setId(int id) { this.id = id;
}
public String getName() { return name;
}
public void setName(String name) { this.name = name;
}
public Date getStartDate() { return startDate;
}
public void setStartDate(Date startDate) { this.startDate = startDate;
}
public class ProfessorService { protected EntityManager em;
public ProfessorService(EntityManager em) { this.em = em;
}
public void createProfessor(Professor emp) {
em.persist(emp);
}
public Collection<Professor> findAllProfessors() {
Query query = em.createQuery("SELECT e FROM Professor e"); return (Collection<Professor>) query.getResultList();
}
}
public class Main { public static void main(String[] a) throws Exception {
JPAUtil util = new JPAUtil();
EntityManagerFactory emf = Persistence.createEntityManagerFactory("ProfessorService");
EntityManager em = emf.createEntityManager();
ProfessorService service = new ProfessorService(em);
em.getTransaction().begin();
Professor emp = null;
emp = new ContractProfessor();