/******************************************************************************* * Copyright (c) 2012, 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: * 14/05/2012-2.4 Guy Pelletier * - 376603: Provide for table per tenant support for multitenant applications ******************************************************************************/ package org.eclipse.persistence.testing.models.jpa.advanced.multitenant; import java.util.ArrayList; import java.util.List; import javax.persistence.CollectionTable; import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.SecondaryTable; import javax.persistence.Table; import org.eclipse.persistence.annotations.Multitenant; import org.eclipse.persistence.annotations.TenantTableDiscriminator; import static org.eclipse.persistence.annotations.MultitenantType.TABLE_PER_TENANT; import static org.eclipse.persistence.annotations.TenantTableDiscriminatorType.SUFFIX; @Entity @Table(name="JPA_CANDIDATE") @Multitenant(TABLE_PER_TENANT) @TenantTableDiscriminator(type=SUFFIX) @SecondaryTable(name="JPA_CANDY_SALARY") public class Candidate { @Id @GeneratedValue public long id; @Column(table="JPA_CANDY_SALARY") public int salary; public String name; @ManyToOne public Riding riding; @ManyToOne public Party party; @ManyToMany @JoinTable( name="JPA_CAN_SUP", joinColumns=@JoinColumn(name="CANDIDATE_ID"), inverseJoinColumns=@JoinColumn(name="SUPPORTER_ID") ) public List<Supporter> supporters; @ElementCollection @CollectionTable(name="JPA_CANDIDATE_HONORS") @Column(name="HONOR") public List<String> honors; public Candidate() { honors = new ArrayList<String>(); supporters = new ArrayList<Supporter>(); } public void addHonor(String honor) { honors.add(honor); } public void addSupporter(Supporter supporter) { supporters.add(supporter); supporter.addSupportedCandidate(this); } public List<String> getHonors() { return honors; } public long getId() { return id; } public String getName() { return name; } public Party getParty() { return party; } public Riding getRiding() { return riding; } public int getSalary() { return salary; } public List<Supporter> getSupporters() { return supporters; } public void setHonors(List<String> honors) { this.honors = honors; } public void setId(long id) { this.id = id; } public void setName(String name) { this.name = name; } public void setParty(Party party) { this.party = party; } public void setRiding(Riding riding) { this.riding = riding; } public void setSalary(int salary) { this.salary = salary; } public void setSupporters(List<Supporter> supporters) { this.supporters = supporters; } }