Hi Rick,

As requested, here is a test I wrote in the 'openjpa-persistence-jdbc'
project:


package org.apache.openjpa.persistence.jdbc.update;

import java.util.Date;

import javax.persistence.EntityManager;

import org.apache.openjpa.persistence.test.SingleEMFTestCase;


public class TestCascadePersist extends SingleEMFTestCase {
    
    public void setUp() throws Exception {
        super.setUp(CLEAR_TABLES, Parent.class, Child.class); 
    }    

    
    public void testAddChildShouldNotUpdateParent() {
        EntityManager em = emf.createEntityManager();

        em.getTransaction().begin();
        Parent parent = new Parent();
        parent.setName("parent");
        em.persist(parent);
        em.getTransaction().commit();
        
        long parentId = parent.getId();
        Date expectedLastModifiedDate = parent.getLastModifiedDate();
        
        em.getTransaction().begin();
        parent = em.find(Parent.class, parentId);
        parent.newChild("child");
        em.getTransaction().commit();
        
        Date actualModifiedDate = parent.getLastModifiedDate(); 

        assertEquals("The last modified date should not change.",
                     expectedLastModifiedDate.getTime(),
actualModifiedDate.getTime());        
    }

}


In order for the test to work, the following instance variable and methods
have to be added to the
existing org.apache.openjpa.persistence.jdbc.update.Parent class:


    private Date lastModifiedDate;
        
    public Date getLastModifiedDate() {
        return lastModifiedDate;
    } 
    
    @PrePersist
    @PreUpdate
    public void onUpdate() {
        this.lastModifiedDate = new Date();
    } 


Thanks!

Alain



--
View this message in context: 
http://openjpa.208410.n2.nabble.com/Unecessary-database-update-tp7586121p7586153.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Reply via email to