| /* |
| * Copyright (c) 2005, 2020 Oracle and/or its affiliates. All rights reserved. |
| * Copyright (c) 2005, 2015 SAP. 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 |
| */ |
| |
| // Contributors: |
| // SAP - initial API and implementation |
| |
| package org.eclipse.persistence.testing.models.wdf.jpa1.employee; |
| |
| import java.io.Serializable; |
| import java.math.BigDecimal; |
| import java.util.ArrayList; |
| import java.util.Collection; |
| import java.util.HashSet; |
| import java.util.List; |
| import java.util.Set; |
| |
| import jakarta.persistence.AttributeOverride; |
| import jakarta.persistence.AttributeOverrides; |
| import jakarta.persistence.Basic; |
| import jakarta.persistence.Cacheable; |
| import jakarta.persistence.CascadeType; |
| import jakarta.persistence.Column; |
| import jakarta.persistence.Embedded; |
| import jakarta.persistence.Entity; |
| import jakarta.persistence.FetchType; |
| import jakarta.persistence.Id; |
| import jakarta.persistence.JoinColumn; |
| import jakarta.persistence.JoinColumns; |
| import jakarta.persistence.JoinTable; |
| import jakarta.persistence.ManyToMany; |
| import jakarta.persistence.ManyToOne; |
| import jakarta.persistence.NamedNativeQueries; |
| import jakarta.persistence.NamedNativeQuery; |
| import jakarta.persistence.NamedQuery; |
| import jakarta.persistence.OneToMany; |
| import jakarta.persistence.OneToOne; |
| import jakarta.persistence.OrderBy; |
| import jakarta.persistence.PostPersist; |
| import jakarta.persistence.PostUpdate; |
| import jakarta.persistence.Table; |
| import jakarta.persistence.Transient; |
| import jakarta.persistence.UniqueConstraint; |
| |
| import org.eclipse.persistence.annotations.Customizer; |
| import org.eclipse.persistence.testing.framework.wdf.customizer.AdjustArrayTypeCustomizer; |
| |
| @Cacheable(true) |
| @Entity |
| @Table(name = "TMP_EMP", uniqueConstraints = @UniqueConstraint(columnNames = { "ID", "DEPARTMENT" })) |
| @NamedQuery(name = "Employee.getEmployeesAndHobbies", query = "select e, h from Employee e left join e.hobbies h") |
| @NamedNativeQueries( { |
| @NamedNativeQuery(name = "Employee.schlonz", query = "select \"TMP_EMP\".* from \"TMP_EMP\"", resultClass = Employee.class), |
| @NamedNativeQuery(name = "Employee.schlonzHint", query = "select \"TMP_EMP\".* from \"TMP_EMP\"", resultClass = Employee.class) }) |
| @Customizer(AdjustArrayTypeCustomizer.class) |
| public class Employee implements Serializable { |
| |
| private static final long serialVersionUID = 1L; |
| |
| @Id |
| protected int id; |
| |
| @Basic |
| protected String firstname; |
| |
| @Basic |
| protected String lastname; |
| |
| // <attribute name="department"> |
| // <many-to-one |
| // target-entity="com.sap.jpa.example.Department"/> |
| // <join-column name="DEPARTMENT"/> |
| // </attribute> |
| @ManyToOne |
| @JoinColumn(name = "DEPARTMENT") |
| protected Department department; |
| |
| @Basic |
| protected BigDecimal salary; |
| |
| // <attribute name="reviews"> |
| // <one-to-many |
| // target-entity="com.sap.jpa.example.Review"/> |
| // <join-table name="TMP_EMP_REVIEW"> |
| // <join-column name="EMP_ID"/> |
| // <inverse-join-column name="REVIEW_ID"/> |
| // </join-table> |
| // </attribute> |
| @OneToMany |
| @JoinTable(name = "TMP_EMP_REVIEW", joinColumns = { @JoinColumn(name = "EMP_ID") }, inverseJoinColumns = { @JoinColumn(name = "REVIEW_ID") }) |
| protected Set<Review> reviews; |
| |
| @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "riders", fetch = FetchType.EAGER) |
| protected Set<Bicycle> bicycles; |
| |
| @Embedded |
| @AttributeOverrides( { @AttributeOverride(name = "startDate", column = @Column(name = "EMP_START")), @AttributeOverride(name = "endDate", column = @Column(name = "EMP_END")) }) |
| protected EmploymentPeriod period; |
| |
| // <attribute name="cubicle"> |
| // <one-to-one |
| // target-entity="com.sap.jpa.example.Cubicle"> |
| // </one-to-one> |
| // <join-column name="CUBICLE_FLOOR" referenced-column-name="FLOOR"/> |
| // <join-column name="CUBICLE_PLACE" referenced-column-name="PLACE"/> |
| // </attribute> |
| @OneToOne(fetch = FetchType.LAZY) |
| @JoinColumns( { @JoinColumn(name = "CUBICLE_FLOOR", referencedColumnName = "FLOOR"), |
| @JoinColumn(name = "CUBICLE_PLACE", referencedColumnName = "PLACE") }) |
| protected Cubicle cubicle; |
| |
| @Transient |
| private boolean postUpdateCalled; |
| |
| @Transient |
| private boolean postPersistCalled; |
| |
| // <attribute name="patents"> |
| // <many-to-many |
| // target-entity="com.sap.jpa.example.Patent"/> |
| // <join-table name="TMP_EMP_PATENT"> |
| // <join-column name="EMP_ID"/> |
| // <inverse-join-column name="PATENT_NAME" |
| // referenced-column-name="PAT_NAME"/> |
| // <!-- inverse-join-column name="PATENT_YEAR" |
| // referenced-column-name="PAT_YEAR"/ --> |
| // </join-table> |
| // </attribute> |
| @ManyToMany |
| @JoinTable(name = "TMP_EMP_PATENT", joinColumns = { @JoinColumn(name = "EMP_ID") }, inverseJoinColumns = { |
| @JoinColumn(name = "PATENT_NAME", referencedColumnName = "PAT_NAME"), |
| @JoinColumn(name = "PATENT_YEAR", referencedColumnName = "PAT_YEAR") }) |
| protected Set<Patent> patents; |
| |
| // <attribute name="projects"> |
| // <many-to-many |
| // target-entity="com.sap.jpa.example.Project"/> |
| // <join-table name="TMP_EMP_PROJECT"> |
| // <join-column name="EMP_ID"/> |
| // <inverse-join-column name="PROJECT_ID"/> |
| // </join-table> |
| // </attribute> |
| @ManyToMany |
| @JoinTable(name = "TMP_EMP_PROJECT", joinColumns = { @JoinColumn(name = "EMP_ID") }, inverseJoinColumns = { @JoinColumn(name = "PROJECT_ID") }) |
| protected Set<Project> projects; |
| |
| // <attribute name="travelProfile"> |
| // <one-to-one |
| // target-entity="com.sap.jpa.example.TravelProfile"/> |
| // <join-column name="PROFILE_GUID"/> |
| // </attribute> |
| @OneToOne |
| @JoinColumn(name = "PROFILE_GUID", columnDefinition=TravelProfile.BINARY_16_COLUMN) |
| protected TravelProfile travelProfile; |
| |
| // <attribute name="hobbies"> |
| // <many-to-many |
| // target-entity="com.sap.jpa.example.Hobby"/> |
| // <join-table name="TMP_EMP_HOBBY"> |
| // <join-column name="EMP_ID"/> |
| // <inverse-join-column name="HOBBY_ID"/> |
| // </join-table> |
| // </attribute> |
| @ManyToMany |
| @JoinTable(name = "TMP_EMP_HOBBY", joinColumns = { @JoinColumn(name = "EMP_ID") }, inverseJoinColumns = { @JoinColumn(name = "HOBBY_ID") }) |
| @OrderBy("category ASC, description DESC") |
| protected List<Hobby> hobbies; |
| |
| @OneToOne(cascade = { CascadeType.PERSIST }, mappedBy = "driver") |
| protected MotorVehicle motorVehicle; |
| |
| @OneToOne |
| @JoinColumn(name = "SAMPLE_ACCOUNT") |
| protected Account sampleAccount; |
| |
| @OneToOne |
| @JoinColumn(name = "BROKERAGE_ACCOUNT") |
| protected BrokerageAccount brokerageAccount; |
| |
| @OneToOne(mappedBy = "client") |
| protected CheckingAccount checkingAccount; |
| |
| @OneToMany |
| @JoinTable(name = "TMP_EMP_CREDIT", joinColumns = { @JoinColumn(name = "CLIENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "CREDIT_ID") }) |
| protected Set<CreditCardAccount> creditCardAccounts; |
| |
| // @OneToOne |
| // @JoinColumn(name = "AUTOMOBILE") |
| @Transient // EclipseLink has issue with cyclic FKs FIXME: file bug and add id here |
| protected MotorVehicle automobile; |
| |
| @ManyToOne |
| @JoinColumn(name = "COSTCENTER") |
| protected CostCenter costCenter; |
| |
| public Employee() { |
| } |
| |
| public Employee(int aId, String aFirst, String aLast, Department dep) { |
| this(aId, aFirst, aLast, dep, null); |
| } |
| |
| public Employee(int aId, String aFirst, String aLast, Department dep, BigDecimal aSalary) { |
| id = aId; |
| firstname = aFirst; |
| lastname = aLast; |
| department = dep; |
| salary = aSalary; |
| } |
| |
| public int getId() { |
| return id; |
| } |
| |
| public void setFirstName(String aFirst) { |
| firstname = aFirst; |
| } |
| |
| public String getFirstName() { |
| return firstname; |
| } |
| |
| public void setLastName(String aLast) { |
| lastname = aLast; |
| } |
| |
| public String getLastName() { |
| return lastname; |
| } |
| |
| public void setDepartment(Department dep) { |
| department = dep; |
| } |
| |
| public Department getDepartment() { |
| return department; |
| } |
| |
| public Cubicle getCubicle() { |
| return cubicle; |
| } |
| |
| public void setCubicle(Cubicle aCubicle) { |
| cubicle = aCubicle; |
| } |
| |
| public Set<Review> getReviews() { |
| return reviews; |
| } |
| |
| public void addReview(Review rev) { |
| if (reviews == null) { |
| reviews = new HashSet<Review>(); |
| } |
| reviews.add(rev); |
| } |
| |
| public EmploymentPeriod getEmploymentPeriod() { |
| return period; |
| } |
| |
| public void setEmploymentPeriod(EmploymentPeriod aPeriod) { |
| period = aPeriod; |
| } |
| |
| public void clearPostUpdate() { |
| postUpdateCalled = false; |
| } |
| |
| public void clearPostPersist() { |
| postPersistCalled = false; |
| } |
| |
| @PostUpdate |
| public void postUpdate() { |
| postUpdateCalled = true; |
| } |
| |
| @PostPersist |
| public void postPersist() { |
| postPersistCalled = true; |
| } |
| |
| public boolean postUpdateWasCalled() { |
| return postUpdateCalled; |
| } |
| |
| public boolean postPersistWasCalled() { |
| return postPersistCalled; |
| } |
| |
| /** |
| * @param reviews |
| * The reviews to set. |
| */ |
| public void setReviews(Set<Review> reviews) { |
| this.reviews = reviews; |
| } |
| |
| // @ManyToMany |
| public Collection<Patent> getPatents() { |
| return patents; |
| } |
| |
| public void setPatents(Collection<Patent> patents) { |
| this.patents = new HashSet<Patent>(patents); |
| } |
| |
| public void addPatent(Patent patent) { |
| if (patents == null) { |
| patents = new HashSet<Patent>(); |
| } |
| patents.add(patent); |
| } |
| |
| /** |
| * @return Returns the projects. |
| */ |
| public Set<Project> getProjects() { |
| return projects; |
| } |
| |
| /** |
| * @param projects |
| * The projects to set. |
| */ |
| public void setProjects(Set<Project> projects) { |
| this.projects = projects; |
| } |
| |
| /** |
| * @return Returns the travelProfile. |
| */ |
| public TravelProfile getTravelProfile() { |
| return travelProfile; |
| } |
| |
| /** |
| * @param travelProfile |
| * The travelProfile to set. |
| */ |
| public void setTravelProfile(TravelProfile travelProfile) { |
| this.travelProfile = travelProfile; |
| } |
| |
| public BigDecimal getSalary() { |
| return salary; |
| } |
| |
| public void setSalary(BigDecimal salary) { |
| this.salary = salary; |
| } |
| |
| public List<Hobby> getHobbies() { |
| return hobbies; |
| } |
| |
| public void setHobbies(List<Hobby> hobbies) { |
| this.hobbies = hobbies; |
| } |
| |
| public void addHobby(Hobby hobby) { |
| if (hobbies == null) { |
| hobbies = new ArrayList<Hobby>(); |
| } |
| hobbies.add(hobby); |
| } |
| |
| public MotorVehicle getMotorVehicle() { |
| return motorVehicle; |
| } |
| |
| public void setMotorVehicle(MotorVehicle motorVehicle) { |
| this.motorVehicle = motorVehicle; |
| } |
| |
| public Set<Bicycle> getBicycles() { |
| return bicycles; |
| } |
| |
| public void setBicycles(Set<Bicycle> bicycles) { |
| this.bicycles = bicycles; |
| } |
| |
| public void addBicycle(Bicycle bike) { |
| if (bicycles == null) { |
| bicycles = new HashSet<Bicycle>(); |
| } |
| bicycles.add(bike); |
| |
| if (bike.getRiders() == null) { |
| bike.setRiders(new HashSet<Employee>()); |
| } |
| bike.getRiders().add(this); |
| } |
| |
| public Account getSampleAccount() { |
| return this.sampleAccount; |
| } |
| |
| public void setSampleAccount(Account aAccount) { |
| this.sampleAccount = aAccount; |
| } |
| |
| public BrokerageAccount getBrokerageAccount() { |
| return this.brokerageAccount; |
| } |
| |
| public void setBrokerageAccount(BrokerageAccount aBrokerageAccount) { |
| this.brokerageAccount = aBrokerageAccount; |
| } |
| |
| public CheckingAccount getCheckingAccount() { |
| return this.checkingAccount; |
| } |
| |
| public void setCheckingAccount(CheckingAccount aCheckingAccount) { |
| this.checkingAccount = aCheckingAccount; |
| } |
| |
| public Set<CreditCardAccount> getCreditCardAccounts() { |
| return this.creditCardAccounts; |
| } |
| |
| public void addCreditCardAccount(CreditCardAccount cca) { |
| if (this.creditCardAccounts == null) { |
| this.creditCardAccounts = new HashSet<CreditCardAccount>(); |
| } |
| this.creditCardAccounts.add(cca); |
| } |
| |
| public MotorVehicle getAutomobile() { |
| return automobile; |
| } |
| |
| public void setAutomobile(MotorVehicle automobile) { |
| this.automobile = automobile; |
| } |
| |
| public CostCenter getCostCenter() { |
| return costCenter; |
| } |
| |
| public void setCostCenter(CostCenter costCenter) { |
| this.costCenter = costCenter; |
| } |
| |
| public static class KrassEmp extends Employee { |
| private static final long serialVersionUID = 1L; |
| private final String orgelKnopf; |
| |
| public String getOrgelKnopf() { |
| return orgelKnopf; |
| } |
| |
| public KrassEmp(String orgelKnopf) { |
| super(); |
| this.orgelKnopf = orgelKnopf; |
| } |
| } |
| } |