Doh!!! Thanks for clarifying.

On Wed, 2011-02-09 at 15:13 +0000, Mark Struberg wrote:
> Hi Joel!
> 
> You might look at @PreUpdate.
> 
> @PrePersist only gets called before a em.persist() performs the sql INSERT 
> statement. @PreUpdate will get called before any sql UPDATE to the entity.
> 
> LieGrue,
> strub
> 
> --- On Wed, 2/9/11, Joel Halbert <[email protected]> wrote:
> 
> > From: Joel Halbert <[email protected]>
> > Subject: Does PrePersist work when merging entities? (2.0.1)
> > To: "[email protected]" <[email protected]>
> > Date: Wednesday, February 9, 2011, 3:06 PM
> > Hi Folks,
> > 
> > Are there any known issues around using  @PrePersist
> > on merge with
> > 2.0,.1?
> > My Entities use Property access.
> > 
> > @PostLoad method is always called when loading entities.
> > @PrePersist is called on persist, but never on merge.
> > 
> > I'm tried using both runtime (agent) and compile time
> > enhancement.
> > 
> > Here's a sample Entity that I used for testing this.
> > 
> > 
> > 
> > import javax.persistence.*;
> > 
> > @Entity
> > @Access(AccessType.PROPERTY)
> > @Table(name="TEST")
> > public class Test {
> > 
> >     private int id;
> >     private String name;
> >     
> >     @Id
> >     @GeneratedValue(strategy =
> > GenerationType.IDENTITY)    
> >     @Column(name="ID")
> >     public int getId() {
> >         return id;
> >     }
> >     public void setId(int id) {
> >         this.id = id;
> >     }
> >     
> >     @Column(name="NAME")
> >     public String getName() {
> >         return name;
> >     }
> >     public void setName(String name) {
> >         this.name = name;
> >     }
> >     
> >     @PrePersist
> >     void populateDBFields(){
> >        
> > System.out.println("Hello, I happen prePersist!");
> >     }
> > 
> >     @PostLoad
> >     void populateTransientFields(){
> >        
> > System.out.println("Hello, I happen postLoad!");
> >     }
> >     
> >     public static void main(String[] args)
> > throws Exception {
> >         EntityManagerFactory
> > factory = Persistence.createEntityManagerFactory(
> >            
> >     "su3", null);
> >         EntityManager em =
> > factory.createEntityManager();
> > 
> >         // Test t = new
> > Test();
> >         //
> > t.setName("name");
> >         // em.persist(t);
> > 
> >         Test t =
> > em.find(Test.class, 1);
> >         t.setName("new
> > name");
> >         em.merge(t);
> > 
> >        
> > em.getTransaction().commit();
> >         em.close();
> > 
> >     }
> > }
> > 
> > 
> > 
> > 
> > Any clues?
> > 
> > Joel
> > 
> 
> 
>  
> ____________________________________________________________________________________
> 8:00? 8:25? 8:40? Find a flick in no time 
> with the Yahoo! Search movie showtime shortcut.
> http://tools.search.yahoo.com/shortcuts/#news


Reply via email to