/*******************************************************************************
* Copyright (c) 1998, 2015 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 v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.testing.models.jpa.advanced.compositepk;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.IdClass;
import javax.persistence.OneToOne;
import javax.persistence.ManyToOne;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import static javax.persistence.GenerationType.*;
import javax.persistence.GeneratedValue;
import javax.persistence.SequenceGenerator;
@Entity
@Table(name="CMP3_SCIENTIST")
@IdClass(org.eclipse.persistence.testing.models.jpa.advanced.compositepk.ScientistPK.class)
public class Scientist {
private int idNumber;
private String firstName;
private String lastName;
private Cubicle cubicle;
private Department department;
public Scientist() {}
@Id
@GeneratedValue(strategy=SEQUENCE, generator="SCIENTIST_SEQUENCE_GENERATOR")
@SequenceGenerator(name="SCIENTIST_SEQUENCE_GENERATOR", sequenceName="SCIENTIST_SEQ", allocationSize=1)
@Column(name="ID_NUMBER")
public int getIdNumber() {
return idNumber;
}
public void setIdNumber(int idNumber) {
this.idNumber = idNumber;
}
@Id
@Column(name="F_NAME")
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Id
@Column(name="L_NAME")
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@ManyToOne
@JoinColumns({
@JoinColumn(name="DEPT_NAME", referencedColumnName="NAME"),
@JoinColumn(name="DEPT_ROLE", referencedColumnName="DROLE"),
@JoinColumn(name="DEPT_LOCATION", referencedColumnName="LOCATION")
})
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
@OneToOne
@JoinColumns({
@JoinColumn(name="CUBE_ID", referencedColumnName="ID"),
@JoinColumn(name="CUBE_CODE", referencedColumnName="CODE")
})
public Cubicle getCubicle() {
return cubicle;
}
public void setCubicle(Cubicle cubicle) {
this.cubicle = cubicle;
}
public ScientistPK getPK() {
return new ScientistPK(idNumber, firstName, lastName);
}
}