package jpql.query; import java.io.Serializable; import java.util.Collection; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Embeddable; import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; @Entity @NamedQueries ({ @NamedQuery(name="employee.?1", query="SELECT e FROM Employee e WHERE e.name = ?1 ORDER BY e.name"), @NamedQuery(name="employee.addition1", query="SELECT 2 + 2.2F FROM Employee e"), @NamedQuery(name="employee.addition2", query="SELECT AVG(e.salary) + 2E2 FROM Employee e"), @NamedQuery(name="employee.addition3", query="SELECT e.salary + 2 FROM Employee e"), @NamedQuery(name="employee.addition4", query="SELECT e.name + 2 FROM Employee e"), @NamedQuery(name="employee.and", query="SELECT OBJECT(e) FROM Employee e WHERE e.phoneNumbers IS EMPTY and e.name like 'testFlushModeOnUpdateQuery'"), @NamedQuery(name="employee.case1", query="SELECT CASE WHEN e.name = 'Java Persistence Query Language' THEN 'Java Persistence Query Language' WHEN e.salary BETWEEN 1 and 2 THEN SUBSTRING(e.name, 0, 2) ELSE e.name END FROM Employee e"), @NamedQuery(name="employee.case2", query="SELECT CASE WHEN e.name = 'JPQL' THEN e.working WHEN e.salary BETWEEN 1 and 2 THEN TRUE ELSE p.completed END FROM Employee e, Project p"), @NamedQuery(name="employee.case3", query="SELECT CASE WHEN e.name = 'JPQL' THEN e.working WHEN e.salary BETWEEN 1 and 2 THEN SUBSTRING(e.name, 0, 2) ELSE e.dept END FROM Employee e"), @NamedQuery(name="employee.caseInsensitive", query="SELECT e FROM Employee E"), @NamedQuery(name="employee.collection", query="SELECT e.name, d.dname FROM Employee e, Dept d"), @NamedQuery(name="employee.date1", query="SELECT CURRENT_DATE FROM Employee e"), @NamedQuery(name="employee.date2", query="SELECT {d '2008-12-31'} FROM Employee e"), @NamedQuery(name="employee.delete", query="DELETE FROM Employee e"), @NamedQuery(name="employee.delete.dept", query="DELETE FROM Employee e WHERE e.department = :dept"), @NamedQuery(name="employee.dept", query="SELECT e FROM Employee e WHERE e.salary = (SELECT MAX(e.salary) FROM Employee a WHERE a.department = :dept)"), @NamedQuery(name="employee.deptBase", query="SELECT e FROM Employee e WHERE e.department = :dept AND e.salary > :base"), @NamedQuery(name="employee.deptno", query="select e from Employee e where e.dept.deptno in (:deptno)"), @NamedQuery(name="employee.division1", query="SELECT 2 / 2.2F FROM Employee e"), @NamedQuery(name="employee.division2", query="SELECT AVG(e.salary) / 2E2 FROM Employee e"), @NamedQuery(name="employee.division3", query="SELECT e.salary / 2 FROM Employee e"), @NamedQuery(name="employee.division4", query="SELECT e.name / 2 FROM Employee e"), @NamedQuery(name="employee.empId", query="select ds from Employee ds, Product ci where ds.empId = :conversationId AND ds.state = 0 AND ds.cikey = ci.cikey AND ci.state <> 2"), @NamedQuery(name="employee.enum", query="SELECT CASE WHEN e.name = 'Pascal' THEN jpql.query.EnumType.FIRST_NAME WHEN e.name = 'JPQL' THEN jpql.query.EnumType.LAST_NAME ELSE jpql.query.EnumType.NAME END FROM Employee e"), @NamedQuery(name="employee.lower", query="SELECT LOWER(e.name) FROM Employee e"), @NamedQuery(name="employee.false", query="SELECT FALSE FROM Employee e"), @NamedQuery(name="employee.findAll", query="SELECT e FROM Employee e"), @NamedQuery(name="employee.fromSubquery1", query="Select e3.salary from Employee e, (Select count(e2), e2.department from Employee e2 group by e2.department) e3 where e3.department = :dept"), @NamedQuery(name="employee.fromSubquery2", query="Select e3.salary from Employee e, (Select count(e2), e2.department from Employee e2 group by e2.department) e3 where e.department = e3.department"), @NamedQuery(name="employee.fromSubquery3", query="Select e3.count from Employee e, (Select count(e2) as count, e2.department from Employee e2 group by e2.department) e3 where e.department = e3.department"), @NamedQuery(name="employee.fromSubquery4", query="Select e3.result from Employee e, (Select count(e2) + 2.2 as result, e2.department from Employee e2 group by e2.department) e3 where e.department = e3.department"), @NamedQuery(name="employee.func1", query="SELECT FUNC('toString', e.name) FROM Employee e"), @NamedQuery(name="employee.func2", query="SELECT FUNC('age', e.empId, e.salary) FROM Employee e"), @NamedQuery(name="employee.func3", query="SELECT FUNC('age', e.empId, e.name) FROM Employee e"), @NamedQuery(name="employee.func4", query="SELECT FUNC('age', e.empId, :name) FROM Employee e"), @NamedQuery(name="employee.in", query="SELECT e FROM Employee e WHERE e.name IN :type"), @NamedQuery(name="employee.join.fetch1", query="SELECT e FROM Employee e JOIN FETCH e.address WHERE e.empId = :ID"), @NamedQuery(name="employee.join.fetch2", query="SELECT e, e.name FROM Employee e JOIN FETCH e.address WHERE e.empId = :ID"), @NamedQuery(name="employee.join.left1", query="SELECT a FROM Employee e LEFT JOIN e.address a"), @NamedQuery(name="employee.join.left2", query="SELECT m, e FROM Employee e LEFT JOIN e.managerEmployee m"), @NamedQuery(name="employee.max", query="SELECT MAX(e.salary) FROM Employee e"), @NamedQuery(name="employee.min", query="SELECT MIN(e.salary) FROM Employee e"), @NamedQuery(name="employee.mod", query="SELECT MOD(e.salary, e.empId) FROM Employee e"), @NamedQuery(name="employee.multiplication1", query="SELECT 2 * 2.2F FROM Employee e"), @NamedQuery(name="employee.multiplication2", query="SELECT AVG(e.salary) * 2E2 FROM Employee e"), @NamedQuery(name="employee.multiplication3", query="SELECT e.salary * 2 FROM Employee e"), @NamedQuery(name="employee.multiplication4", query="SELECT e.name * 2 FROM Employee e"), @NamedQuery(name="employee.nullif1", query="SELECT NULLIF(e.name, 'JPQL') FROM Employee e"), @NamedQuery(name="employee.nullif2", query="SELECT NULLIF(2 + 2, 'JPQL') FROM Employee e"), @NamedQuery(name="employee.object1", query="SELECT OBJECT(e) FROM Employee e"), @NamedQuery(name="employee.object2", query="SELECT OBJECT(e) FROM Employee e WHERE e.name = ?1"), @NamedQuery(name="employee.resultVariable1", query="SELECT e.name AS n From Employee e"), @NamedQuery(name="employee.resultVariable2", query="SELECT e.name n From Employee e"), @NamedQuery(name="employee.resultVariable3", query="SELECT e.salary / 1000D n From Employee e"), @NamedQuery(name="employee.select", query="SELECT e FROM Employee e"), @NamedQuery(name="employee.sum", query="SELECT SUM(e.salary) FROM Employee e"), @NamedQuery(name="employee.subquery1", query="SELECT e FROM Employee e WHERE EXISTS (SELECT p FROM Project p JOIN p.employees emp WHERE emp = e AND p.name = :name)"), @NamedQuery(name="employee.subquery2", query="SELECT e FROM Employee e WHERE e.empId in (SELECT MIN(ee.empId) FROM Employee ee)"), @NamedQuery(name="employee.subquery.code_1", query="SELECT e FROM Employee e WHERE e.salary > (SELECT AVG(f.salary) FROM Employee f)"), @NamedQuery(name="employee.substraction1", query="SELECT 2 - 2.2F FROM Employee e"), @NamedQuery(name="employee.substraction2", query="SELECT AVG(e.salary) - 2E2 FROM Employee e"), @NamedQuery(name="employee.substraction3", query="SELECT e.salary - 2 FROM Employee e"), @NamedQuery(name="employee.substraction4", query="SELECT e.name - 2 FROM Employee e"), @NamedQuery(name="employee.trim", query="SELECT TRIM(e.name) FROM Employee e"), @NamedQuery(name="employee.true", query="SELECT TRUE FROM Employee e"), @NamedQuery(name="employee.update1", query="UPDATE Employee e SET e.name = ?1"), @NamedQuery(name="employee.update2", query="UPDATE Employee e set e.salary = e.roomNumber, e.roomNumber = e.salary, e.address = null where e.name = 'testUpdateUsingTempStorage'"), @NamedQuery(name="employee.update.positional", query="UPDATE Employee e SET e.manager = ?1 WHERE e.department = ?2"), @NamedQuery(name="employee.upper", query="SELECT UPPER(e.name) FROM Employee e") }) @SuppressWarnings("unused") public class Employee implements Serializable { @ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.LAZY) @JoinColumn(name = "ADDR_ID") private Address address; private String department; @ManyToOne @JoinColumn(name = "DEPTNO") private Dept dept; @Embedded private EmbeddedAddress embeddedAddress; @Id @Column(name = "EMP_ID", nullable = false) private Long empId; private String manager; @ManyToOne(cascade=CascadeType.PERSIST, fetch=FetchType.LAZY) private Employee managerEmployee; private String name; @OneToMany(cascade = CascadeType.ALL, mappedBy = "employee") private Collection<Phone> phoneNumbers; private int roomNumber; private Long salary; private Boolean working; public Employee() { super(); } public Employee(Long empId) { super(); this.empId = empId; } @Embeddable public static class EmbeddedAddress { private String city; private String streetName; private String zipCode; } }