/* * Copyright 2013 Apache Software Foundation. * * Licensed 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.jdbc.strategy; import javax.persistence.EntityManager; import org.apache.openjpa.jdbc.conf.JDBCConfiguration; import org.apache.openjpa.persistence.jdbc.strategy.MappedEntity.Key; import org.apache.openjpa.persistence.test.SingleEMFTestCase; /** */ public class TestHandlerStrategy extends SingleEMFTestCase { @Override public void setUp() throws Exception { super.setUp(MappedEntity.class, MapperEntity.class, "openjpa.jdbc.MappingDefaults", "ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict", CLEAR_TABLES); } /** * @see JIRA ticket OPENJPA-2328 for more explanation */ public void testIssue_OPENJPA2328() { // Not all databases support GenerationType.IDENTITY column(s) if (!((JDBCConfiguration) emf.getConfiguration()).getDBDictionaryInstance().supportsAutoAssign) { return; } EntityManager em = emf.createEntityManager(); MapperEntity ae = new MapperEntity(); for (Key key : Key.values()) { ae.get(key).setValue(System.nanoTime()); } // First step : persist some data into database em.getTransaction().begin(); em.persist(ae); em.getTransaction().commit(); // Second step : update & remove some data from collection em.getTransaction().begin(); ae.get(Key.A).setValue(10L); // Required ae.remove(Key.B); // Required* em.getTransaction().commit(); } }