/******************************************************************************* * 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 * 09/23/2008-1.1 Guy Pelletier * - 241651: JPA 2.0 Access Type support ******************************************************************************/ package org.eclipse.persistence.testing.models.jpa.xml.merge.relationships; import java.util.Collection; import javax.persistence.*; import org.eclipse.persistence.annotations.PrivateOwned; import static javax.persistence.AccessType.FIELD; import static javax.persistence.AccessType.PROPERTY; import static javax.persistence.GenerationType.*; import static javax.persistence.CascadeType.*; /** * This class is mapped in the following file: * - eclipselink.jpa.test\resource\eclipselink-xml-merge-model\orm-annotation-merge-relationships-entity-mappings.xml * * Its equivalent testing file is: * - org.eclipse.persistence.testing.tests.jpa.xml.merge.relationships.EntityMappingsMergeRelationshipsJUnitTestCase */ @Entity(name="XMLMergeCustomer") @Table(name="CMP3_XML_MERGE_CUSTOMER") @Access(PROPERTY) public class Customer implements java.io.Serializable{ private Integer customerId; @Access(FIELD) @Version @Column(name="CUST_VERSION") private int version; private String city; private String name; private Collection<Order> orders; public Customer() {} @Id @GeneratedValue(strategy=TABLE, generator="XML_MERGE_CUSTOMER_TABLE_GENERATOR") // This table generator is overridden in the XML, therefore it should // not be processed. If it is processed, because the table name is so long // it will cause an error. No error means everyone is happy. @TableGenerator( name="XML_MERGE_CUSTOMER_TABLE_GENERATOR", table="CMP3_XML_MERGE_CUSTOMER_SEQ_INCORRECT_LONG_NAME_WILL_CAUSE_ERROR", pkColumnName="SEQ_NAME", valueColumnName="SEQ_COUNT", pkColumnValue="CUST_SEQ" ) @Column(name="CUST_ID") public Integer getCustomerId() { return customerId; } public void setCustomerId(Integer id) { this.customerId = id; } /** * City is mapped in XML, therefore, the Lob annotation should be ignored. * If it is not and is processed, the metadata processing will throw an * exception (invalid lob type). */ @Lob public String getCity() { return city; } public void setCity(String aCity) { this.city = aCity; } /** * Name is mapped in XML, therefore, the Enumerated annotation should be * ignored. If it is not and is processed, the metadata processing will * throw an exception (invalid enumerated type). */ @Enumerated public String getName() { return name; } public void setName(String aName) { this.name = aName; } /** * Order is mapped in XML as follows: * <one-to-many name="orders" target-entity="Order" mapped-by="customer"> * <cascade> * <cascade-persist/> * <cascade-remove/> * </cascade> * </one-to-many> * The annotations should be ignored. If OrderBy is processed, the value * will cause an exception during processing. * */ @OneToMany(cascade=ALL, mappedBy="customer") @PrivateOwned @OrderBy("valueThatShouldCauseAnException") public Collection<Order> getOrders() { return orders; } public void setOrders(Collection<Order> newValue) { this.orders = newValue; } public void addOrder(Order anOrder) { getOrders().add(anOrder); anOrder.setCustomer(this); } public void removeOrder(Order anOrder) { getOrders().remove(anOrder); } }