/******************************************************************************* * 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.inheritance; import java.io.*; import javax.persistence.*; import org.eclipse.persistence.annotations.Cache; import static javax.persistence.GenerationType.*; import static javax.persistence.CascadeType.*; import static javax.persistence.FetchType.*; import static javax.persistence.InheritanceType.*; /** * This tests; * <ul> * <li> the init problem * <li> class name indicator usage * <li> concreate root class * <li> big int as primary key */ @Entity @Table(name="CMP3_PERSON") @Inheritance(strategy=JOINED) @DiscriminatorValue("1") @DiscriminatorColumn(discriminatorType=DiscriminatorType.INTEGER) @Cache(expiry=100000) public class Person implements Serializable { public Number id; public String name; public Car car; public Engineer bestFriend; public Lawyer representitive; @Id @GeneratedValue(strategy=TABLE, generator="PERSON_TABLE_GENERATOR") @TableGenerator( name="PERSON_TABLE_GENERATOR", table="CMP3_INHERITANCE_SEQ", pkColumnName="SEQ_NAME", valueColumnName="SEQ_COUNT", pkColumnValue="PERSON_SEQ" ) @Column(name="ID") public Number getId() { return id; } public void setId(Number id) { this.id = id; } @ManyToOne(cascade=PERSIST, fetch=LAZY, optional=false) @JoinColumn(name="CAR_ID") public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } @Column(name="NAME", length=80) public String getName() { return name; } public void setName(String aName) { name = aName; } @ManyToOne(cascade=PERSIST, fetch=LAZY, optional=false) @JoinColumn(name="FRIEND_ID") public Engineer getBestFriend() { return bestFriend; } public void setBestFriend(Engineer friend) { bestFriend = friend; } @ManyToOne(cascade=PERSIST, fetch=LAZY, optional=false) @JoinColumn(name="REP_ID", referencedColumnName="ID") public Lawyer getRepresentitive() { return representitive; } public void setRepresentitive(Lawyer representitive) { this.representitive = representitive; } public String toString() { return this.name; } }