Java Mailing List Archive

http://www.gg3721.com/

Home » users.openjpa »

Re: openJPA not working with DBUnit....

devu213

2008-08-25

Replies: Find Java Web Hosting

Author LoginPost Reply

I have since realized that this problem has nothing to do with DBUnit. I was
trying to test an inheritance hierarchy with openJPA and that is failing.
I have added to a separate post that already mentions a similar issue with
version 1.1.0


devu213 wrote:
>
> I'm really having problems trying to make openJPA work with DBUnit. Here
> is a snippet of my test class. The moment I have a situation where DBUnit
> does some sort of initializing operations on the database, openJPA starts
> behaving really strangely. Specifically the second test method which uses
> inheritance fails to fire a query for the bae class.
>
> The moment I stop using DBUnit, everything starts working fine and openJPA
> fires the queries for the base class and derived class in the proper
> order.
>
> I've tried using two separate connections for DBUnit and openJPA and then
> finally passing a connection from openJPA to DBUnit.
>
> I really don't understand what is going wrong....Can someone please give
> me some pointers?
>
>
> public class BaseDAOTest extends BaseDBUnitTestCase {
>    
>  @Override
>  protected DatabaseOperation getSetUpOperation() {
>    return DatabaseOperation.DELETE;
>                 //return DatabaseOperation.NONE;  //This
> works....
>
>  }
>
>  @Override
>  protected IDataSet getDataSet() throws Exception {
>    return new FlatXmlDataSet(
>        ClassLoader.getSystemResourceAsStream("BaseDAOTestClean.xml"));
>  }
>  
>  protected IDataSet getDataSet(String datasetName) throws Exception {
>    return new FlatXmlDataSet(
>              ClassLoader.getSystemResourceAsStream(datasetName));  
>  }
>  
>  
>  public void testCreate() {
>    System.out.println("testCreate");
>    EntityManager manager = null;
>    Customer customer = new Customer(new Double(123), new Double(123),
>        new String("DK1"), new Date(), new Date(),
>        new Date(), "KMD", new Date());
>    Customer anotherCustomer = new Customer(new Double(124), new
> Double(124),
>        new String("DK2"), new Date(), new Date(),
>        new Date(), "ATP", new Date());
>    try {  
>      //Invocations to the processing logic
>      manager = PersistenceBootstrapper.getEntityManager();
>      EntityTransaction tx = manager.getTransaction();
>      tx.begin();
>      BaseDAO.create(manager, customer);
>      BaseDAO.create(manager, anotherCustomer);
>      tx.commit();
>      
>      //Do the asserts... Result verification.
>      ITable addedData = getConnection().createQueryTable(
>            "customer",
>            "select pbs_no, cvr_no, postal_cd," +
>            " update_by from customer where" +
>            " pbs_no in (123, 124) order by pbs_no");
>      Assertion.assertEquals(getDataSet("BaseDAOTest1.xml"),
>                        new DefaultDataSet(addedData));
>    } catch (Exception e) {
>      e.printStackTrace();
>      assertEquals("Failed", "Normal flow failed for BaseDAOTest",
>              e.getMessage());
>    } finally {
>      //Do this instead of closing the manager directly on your own.
>      manager.close();
>    }
>  }
>  
>
>  public void testCreateInheritance() {
>    System.out.println("testInheritacne");
>    //EntityManagerFactory factory =
> Persistence.createEntityManagerFactory("refimpl-nocontainer");
>    EntityManager manager = null;
>    Creditor creditor = new Creditor(new Double(125), new Double(125),
>        "DK3", new Date(), new Date(), new Date(), "PROG", new Date());    
>    try {
>      //Note the new dataset
>      IDataSet expectedDataset = getDataSet("BaseDAOTest2.xml");
>      
>      //Invocations to the processing logic
>      manager = PersistenceBootstrapper.getEntityManager();
>      EntityTransaction transaction =  manager.getTransaction();
>      transaction.begin();
>      BaseDAO.create(manager, creditor);
>      transaction.commit();
>      
>      //Do the asserts... Result verification.
>      //Note the way the actual dataset is created.
>      QueryDataSet actual = new QueryDataSet(getConnection());
>      actual.addTable("customer", "select pbs_no, cvr_no, " +
>          "postal_cd, update_by from customer where" +
>          " pbs_no = 125");
>      actual.addTable("creditor", "select pbs_no, cred_type, " +
>          "billing_type, update_by from creditor where" +
>          " pbs_no = 125");
>      
>      //compare with expected dataset.
>      Assertion.assertEquals(actual, expectedDataset);
>    } catch (Exception e) {
>      e.printStackTrace();
>      assertEquals("Failed", "Normal flow failed for BaseDAOTest",
>                                e.getMessage());
>    } finally {
>      //Do this instead of closing the manager directly on your own.
>      //PersistenceBootstrapper.closeManager();
>      manager.close();
>    }
>  }
>  
>
>
>  public void testCreateManyToOne() {
>    System.out.println("manytoone");
>    EntityManager manager = null;
>    
>    Creditor creditor = new Creditor(new Double(126), new Double(126),
>        "DK3", new Date(), new Date(), new Date(), "PROG", new Date());
>    
>    Country creditorsCountry = new Country("DK", "Denmark", "PROG");
>    
>        
>    try {
>      
>      IDataSet dataset = new FlatXmlDataSet(
>        ClassLoader.getSystemResourceAsStream("BaseDAOTestClean.xml"));  
>      
>      //Invocations to the processing logic
>      manager = PersistenceBootstrapper.getEntityManager();
>      EntityTransaction transaction = manager.getTransaction();
>      transaction.begin();
>      BaseDAO.create(manager, creditor);
>      creditor.setCountry(creditorsCountry);
>      transaction.commit();
>      
>      //Do the asserts... Result verification.
>      QueryDataSet actual = new QueryDataSet(getConnection());
>      actual.addTable("customer", "select pbs_no, cvr_no, " +
>          "postal_cd, update_by from customer where" +
>          " pbs_no = 125");
>      actual.addTable("creditor", "select pbs_no, cred_type, " +
>          "billing_type, update_by from creditor where" +
>          " pbs_no = 125");
>      actual.addTable("country_master", "select country_cd, country, " +
>          "update_by from country_master where country_cd = \'DK\'");
>      
>      Assertion.assertEquals(actual, dataset);
>    } catch (Exception e) {
>      e.printStackTrace();
>      assertEquals("Failed", "Normal flow failed for BaseDAOTest",
>              e.getMessage());
>    } finally {
>      //Do this instead of closing the manager directly on your own.
>      //PersistenceBootstrapper.closeManager();
>      manager.close();
>    }
>  }
> }
> http://n2.nabble.com/file/n723864/src.zip src.zip
>

--
Sent from the OpenJPA Users mailing list archive at Nabble.com.

©2008 gg3721.com - Jax Systems, LLC, U.S.A.