KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I ran into some similar questions on StackOverflow, tried the solutions, but did not find an answer. I am using a fairly common JPA strategy to set last modified times on some entities. Set up the columns and the fields, then tag a method with @PreUpdate and let it set them equal to the current time. The problem is that I can see in the debugger that the method is being called and that the field is being updated, however in my DB logs I only see a SQL call to UPDATE the changed field that does NOT include an UPDATE for the timestamp field. Complicating things further @PrePersist works perfectly, only @PreUpdate exibits this behaviour. The closest explanation I've found so far is at this LINK . Similar questions at: #1725699 and #1745890 I am using EclipseLink v2 and JPA v1 for compatibility with GlassFish v2. I have attempted using both annotations directly on methods in the Entity class as well as an EntityListener attached to the Entity class with the @EntityListener annotation. I suspect this is a bug in EclipseLink, but I can't prove it. Bug or not I would very much like this simple operation to work. Is there anything wrong with this implementation? Is this a known issue in EclipseLink? Is this a known issue in JPA? Is there a way around this? Short of going to the database and using triggers, is there an alternate path to let my Java code set the updated_on timestamp? Thanks for the advice! Code snippets follow. Entity fields: @Column(name = "updated_on") @Temporal(TemporalType.TIMESTAMP) private Date updatedOn; @Column(name = "created_on") @Temporal(TemporalType.TIMESTAMP) private Date createdOn; Annotated update met
Tags (comma-separated)
Save Edits
Cancel