/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.openjpa.persistence.datacache.common.apps; import java.util.Collection; import java.util.Date; import java.util.LinkedList; import java.util.Locale; import javax.persistence.CascadeType; import javax.persistence.DiscriminatorColumn; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.OneToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import org.apache.openjpa.persistence.PersistentCollection; import org.apache.openjpa.persistence.jdbc.ContainerTable; import org.apache.openjpa.persistence.jdbc.ElementJoinColumn; import org.apache.openjpa.persistence.jdbc.OrderColumn; import org.apache.openjpa.persistence.jdbc.XJoinColumn; /** * Used in testing; should be enhanced. */ @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "TYP") @DiscriminatorValue("CACHE_A") public class CacheObjectA { private String name = null; private long age = 0; @ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) private CacheObjectA relatedObj = null; @PersistentCollection @ContainerTable(name = "CACHE_STRINGCOLL", joinColumns = @XJoinColumn(name = "ID")) @ElementJoinColumn(name = "ELEMENT") /* * @ManyToMany @JoinTable(name="CACHE_STRINGCOLL", * joinColumns=@JoinColumn(name="ID"), * inverseJoinColumns=@JoinColumn(name="ELEMENT")) */ private Collection<String> stringColl = new LinkedList(); /* * @ManyToMany @JoinTable(name="CACHE_RELATEDCOLL", * joinColumns=@JoinColumn(name="ID"), * inverseJoinColumns=@JoinColumn(name="ELEMENT")) */ @PersistentCollection @ContainerTable(name = "CACHE_RELATEDCOLL", joinColumns = @XJoinColumn(name = "ID")) @ElementJoinColumn(name = "ELEMENT") private Collection<CacheObjectA> relatedColl = new LinkedList(); /* * @PersistentCollection @ContainerTable(name="CACHE_AS", * joinColumns=@XJoinColumn(name="ID")) @ElementJoinColumn(name="ELEMENT") * @OrderColumn(name="ORDR") */ @ManyToMany @JoinTable(name = "CACHE_AS", joinColumns = @JoinColumn(name = "ID"), inverseJoinColumns = @JoinColumn(name = "ELEMENT")) private CacheObjectA[] as; @PersistentCollection @ContainerTable(name = "CACHE_STRINGARRAY", joinColumns = @XJoinColumn(name = "ID")) @ElementJoinColumn(name = "ELEMENT") @OrderColumn(name = "ORDR") /* * @ManyToMany @JoinTable(name="CACHE_STRINGARRAY", * joinColumns=@JoinColumn(name="ID"), * inverseJoinColumns=@JoinColumn(name="ELEMENT")) */ private String[] stringArray; @PersistentCollection @ContainerTable(name = "CACHE_PRIMITIVEARRAY", joinColumns = @XJoinColumn(name = "ID")) @ElementJoinColumn(name = "ELEMENT") @OrderColumn(name = "ORDR") /* * @ManyToMany @JoinTable(name="CACHE_PRIMITIVEARRAY", * joinColumns=@JoinColumn(name="ID"), * inverseJoinColumns=@JoinColumn(name="ELEMENT")) */ private float[] primitiveArray; @PersistentCollection @ContainerTable(name = "CACHE_DATEARRAY", joinColumns = @XJoinColumn(name = "ID")) @ElementJoinColumn(name = "ELEMENT") @OrderColumn(name = "ORDR") /* * @ManyToMany @JoinTable(name="CACHE_DATEARRAY", * joinColumns=@JoinColumn(name="ID"), * inverseJoinColumns=@JoinColumn(name="ELEMENT")) */ private Date[] dateArray; @Temporal(TemporalType.DATE) private Date date; private Locale locale; @ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) private CacheObjectB relatedB = null; @OneToOne(fetch = FetchType.LAZY, cascade = { CascadeType.ALL }) private CacheObjectInterface relatedInterface = null; public CacheObjectA() { } public CacheObjectA(String name, long age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public long getAge() { return age; } public void setAge(long age) { this.age = age; } public CacheObjectA getRelatedObject() { return relatedObj; } public void setRelatedObject(CacheObjectA o) { relatedObj = o; } public Collection getStringCollection() { return stringColl; } public void setStringCollection(Collection coll) { stringColl = coll; } public Collection getRelatedCollection() { return relatedColl; } public void setRelatedCollection(Collection coll) { relatedColl = coll; } public CacheObjectA[] getRelatedArray() { return as; } public void setRelatedArray(CacheObjectA[] array) { as = array; } public String[] getStringArray() { return stringArray; } public void setStringArray(String[] array) { stringArray = array; } public void setPrimitiveArray(float[] val) { primitiveArray = val; } public float[] getPrimitiveArray() { return primitiveArray; } public void setDateArray(Date[] val) { dateArray = val; } public Date[] getDateArray() { return dateArray; } public void setDate(Date val) { date = val; } public Date getDate() { return date; } public void setLocale(Locale val) { locale = val; } public Locale getLocale() { return locale; } public void setRelatedB(CacheObjectB val) { relatedB = val; } public CacheObjectB getRelatedB() { return relatedB; } public void setRelatedInterface(CacheObjectInterface val) { relatedInterface = val; } public CacheObjectInterface getRelatedInterface() { return relatedInterface; } public String toString() { try { return "CacheObjectA: " + super.toString() + "; name: " + name + "; age: " + age; } catch (Exception e) { return "CacheObjectA: " + super.toString() + "; " + "Exception in toString(): " + e; } } }