blob: 07a2a6d6fff86a2c33aa796723beb7a5b3b10ddd [file] [log] [blame]
/*
* Copyright (c) 2018, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
package jpql.query;
import java.io.Serializable;
import java.util.Collection;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import jakarta.persistence.Embedded;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.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 {
private static final long serialVersionUID = 202974405054090345L;
@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;
}
}