@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 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();
BadProfessor emp2 = new BadProfessor();
emp2.setId(2);
emp2.setName("bad");
service.createProfessor(emp2);
System.out.println("Professors: "); for (Professor emp1 : service.findAllProfessors()) {
System.out.print(emp1);
}