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

Reply via email to