/******************************************************************************* * Copyright (c) 2012, 2015 Oracle and/or its affiliates, IBM Corporation. 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: * 31/05/2012-2.4 Guy Pelletier * - 381196: Multitenant persistence units with a dedicated emf should allow for DDL generation. * 07/07/2014-2.5.3 Rick Curtis * - 375101: Date and Calendar should not require @Temporal. ******************************************************************************/ package org.eclipse.persistence.testing.models.jpa.ddlgeneration.multitenant; import java.util.Date; import java.util.HashMap; import java.util.Map; 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.MapKeyColumn; import javax.persistence.MapKeyTemporal; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.TemporalType; import org.eclipse.persistence.annotations.Multitenant; import static javax.persistence.TemporalType.DATE; import static org.eclipse.persistence.annotations.MultitenantType.TABLE_PER_TENANT; @Entity @Table(name="GEN_MASON") @Multitenant(TABLE_PER_TENANT) // Default to suffix. public class Mason { public int id; public String name; public Trowel trowel; public Map<Date, String> awards; public Map<Date, Integer> hoursWorked; public Map<Date, Mason> uniSelf; public Mason() { awards = new HashMap<Date, String>(); hoursWorked = new HashMap<Date, Integer>(); uniSelf = new HashMap<Date, Mason>(); } public void addAward(Date awardDate, String award) { awards.put(awardDate, award); } @ElementCollection @CollectionTable( name="GEN_MASON_AWARDS", joinColumns=@JoinColumn(name="MASON_ID")) @MapKeyColumn(name="AWARD_DATE") @MapKeyTemporal(DATE) @Column(name="AWARD") public Map<Date, String> getAwards() { return awards; } public void addHoursWorked(Date d, Integer time){ hoursWorked.put(d, time); } @ElementCollection public Map<Date, Integer> getHoursWorked() { return hoursWorked; } @Id @GeneratedValue public int getId() { return id; } public String getName() { return name; } @OneToOne @JoinColumn(name="TROWEL_ID") public Trowel getTrowel() { return trowel; } public void setAwards(Map<Date, String> awards) { this.awards = awards; } public void setHoursWorked(Map<Date, Integer> h) { hoursWorked = h; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setTrowel(Trowel trowel) { this.trowel = trowel; } public void addUniSelf(Date d, Mason m){ uniSelf.put(d, m); } @OneToMany @MapKeyTemporal(TemporalType.TIMESTAMP) public Map<Date, Mason> getUniSelf() { return uniSelf; } public void setUniSelf(Map<Date, Mason> uniSelf) { this.uniSelf = uniSelf; } }