blob: fd1702470af48f709fa256d1a796bb478c69dc3c [file] [log] [blame]
/*
* 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.query;
import javax.persistence.Query;
import org.apache.openjpa.persistence.query.common.apps.Entity1;
import org.apache.openjpa.persistence.query.common.apps.RuntimeTest1;
import org.apache.openjpa.persistence.query.common.apps.RuntimeTest2;
import org.apache.openjpa.persistence.OpenJPAEntityManager;
public class TestEJBDeleteUpdateImpl extends BaseQueryTest {
RuntimeTest1 runt1;
RuntimeTest2 runt2;
Entity1 ent;
public TestEJBDeleteUpdateImpl(String test) {
super(test);
}
public void setUp() {
deleteAll(RuntimeTest1.class);
deleteAll(RuntimeTest2.class);
deleteAll(Entity1.class);
OpenJPAEntityManager em =
(OpenJPAEntityManager) currentEntityManager();
startTx(em);
runt1 = new RuntimeTest1(1);
runt1.setStringField("runt1");
runt1.setSelfOneOne(new RuntimeTest1(2));
runt2 = new RuntimeTest2(3);
runt2.setStringField("runt2");
ent = new Entity1(23, "UPDATEST", 100);
em.persist(runt1);
em.persist(runt2);
em.persist(ent);
endTx(em);
endEm(em);
}
public void testUpdate1() {
OpenJPAEntityManager em =
(OpenJPAEntityManager) currentEntityManager();
startTx(em);
RuntimeTest1 ret = em.find(RuntimeTest1.class, em.getObjectId(runt1));
assertNotNull(ret);
assertEquals("runt1", ret.getStringField());
assertNotNull(ret.getSelfOneOne());
String ejbqlUpdate =
"UPDATE RuntimeTest1 x SET x.stringField = :strngfld WHERE x.stringField = :stdfield";
int updatedEntities = em.createQuery(ejbqlUpdate)
.setParameter("strngfld", "runner13")
.setParameter("stdfield", "runt1")
.executeUpdate();
assertEquals(1, updatedEntities);
endTx(em);
RuntimeTest1 ret2 = em.find(RuntimeTest1.class, em.getObjectId(runt1));
em.refresh(ret2);
assertNotNull(ret2);
assertEquals("runner13", ret2.getStringField());
endEm(em);
}
public void testUpdate2() {
OpenJPAEntityManager em =
(OpenJPAEntityManager) currentEntityManager();
startTx(em);
RuntimeTest1 run = em.find(RuntimeTest1.class, em.getObjectId(runt1));
assertNotNull(run);
assertEquals("runt1", run.getStringField());
assertNotNull(run.getSelfOneOne());
String ejbqlUpdate = "UPDATE RuntimeTest1 x " +
"SET x.stringField = :strngfld " +
"WHERE x.stringField = :field";
int upEntities = em.createQuery(ejbqlUpdate)
.setParameter("strngfld", "upd")
.setParameter("field", "runt1")
.executeUpdate();
assertEquals(1, upEntities);
endTx(em);
em = (OpenJPAEntityManager) currentEntityManager();
startTx(em);
RuntimeTest1 inst = em.find(RuntimeTest1.class, em.getObjectId(runt1));
em.refresh(inst);
assertNotNull(inst);
assertEquals("upd", inst.getStringField());
endTx(em);
endEm(em);
}
public void testDelete1() {
OpenJPAEntityManager em =
(OpenJPAEntityManager) currentEntityManager();
startTx(em);
RuntimeTest1 run = em.find(RuntimeTest1.class, em.getObjectId(runt1));
assertNotNull(run);
assertEquals("runt1", run.getStringField());
assertNotNull(run.getSelfOneOne());
String ejbdelUpdate = "DELETE FROM RuntimeTest1 s " +
"WHERE s.stringField = :strngfld";
int delEntity = em.createQuery(ejbdelUpdate)
.setParameter("strngfld", "runt1")
.executeUpdate();
assertEquals(1, delEntity);
RuntimeTest1 del = em.find(RuntimeTest1.class, em.getObjectId(runt1));
assertNull(del);
endTx(em);
endEm(em);
}
public void testDelete2() {
OpenJPAEntityManager em =
(OpenJPAEntityManager) currentEntityManager();
startTx(em);
RuntimeTest1 run = em.find(RuntimeTest1.class, em.getObjectId(runt1));
assertNotNull(run);
assertEquals("runt1", run.getStringField());
assertNotNull(run.getSelfOneOne());
String ejbdelUpdate =
"DELETE FROM RuntimeTest1 r WHERE r.stringField = ?1";
Query query = em.createQuery(ejbdelUpdate);
query.setParameter(1, "runt1");
int ok = query.executeUpdate();
assertEquals(1, ok);
endTx(em);
endEm(em);
}
public void testUpdate3() {
OpenJPAEntityManager em =
(OpenJPAEntityManager) currentEntityManager();
startTx(em);
Entity1 ent = em.find(Entity1.class, 23);
assertNotNull(ent);
assertEquals("UPDATEST", ent.getStringField());
int upd = em.createQuery(
"UPDATE Entity1 e SET e.stringField = \'UPDATEFAILED\' WHERE " +
"e.pk = 23").executeUpdate();
assertEquals(1, upd);
endTx(em);
endEm(em);
}
}