Hi Matt,

On 18 Dec 2007 at 9:25, Matt Raible wrote:

> I believe these annotations only works when you're using JPA.

I think you're right.  I had thought that Annotations like @EntityListeners, 
@PrePersist, @PreUpdate etc should work when I found 
them amongst Hibernate API documentation in places like this:

http://www.hibernate.org/hib_docs/ejb3-api/index.html?javax/persistence/PrePersist.html,
 but I've sinced worked out that this 
docco is for Hibernate's EntityManager which is all about EJB3 and I guess that 
because my project is a basic Struts one, I'm not 
using EJBs and these elements of Hibernate functionality is therefore not 
available to me.  Unfortunately, although I tried to keep 
my project as pure "JPA" as I could, I've ended up becoming dependent on a 
number of Hibernate extensions so I think it will now 
be too hard to switch over, but I'll take a look at that.

Leaving aside my application code, how difficult is it to switch a basic 
AppFuse 2.0 + Struts2 + Hibernate app over to Struts2 + 
JPA?  Is it just a matter of tweaking something in the pom.xml?

> On 12/18/07, Rob Hills <[EMAIL PROTECTED]> wrote:
> > Hi Again,
> >
> > I spoke too soon on this one.  I thought the timestamping was working, but 
> > then discovered it was being done by
> > some code I'd put into a base dao a little while back.  AFAICT, the 
> > @EntityListeners and @PrePersist annotations
> > seem to be totally ignored by the version of Hibernate in AppFuse 2.0, 
> > which is a real shame as they promise very
> > useful functionality.
> >
> > On 17 Dec 2007 at 23:55, Rob Hills wrote:
> >
> > > WooHoo! I found a JPA/Hibernate "Event Listener" solution for this, and 
> > > it's
> > > really easy.  As is often the way, I stumbled across it while looking for
> > > something else.
> > >
> > > I found the solution here:
> > >
> > > http://www.theserverside.com/tt/articles/article.tss?l=JPAObjectModel
> > >
> > > Although the article has an unlikely-looking title, search for the string
> > > "@EntityListeners" and you'll find the first of three code examples 
> > > showing
> > > how to add auditing for Created date/time, Updated date/time and the user
> > > making the changes.  The keys are the JPA @EntityListeners and
> > > @PrePersist JPA tags (also supported by Hibernate.  It took me less than 5
> > > minutes to get it all working (though I already had a base class for all 
> > > my
> > > entities and it already had a lastUpdated attribute, so that made it 
> > > easier).
> > >
> > > On 14 Dec 2007 at 9:54, Rob Hills wrote:
> > >
> > > > Matt Raible wrote:
> > > > > Have you thought about doing this with a trigger in your database? Do
> > > > > you need to record the user's information along with this auditing?
> > > > > I've done this with Event Listeners in the past.
> > > > >
> > > > I'd be quite comfortable with doing it as a trigger, but  for
> > > > "political" reasons that could be a bit tricky (though not impossible).
> > > > I just thought that because it's such a common pattern, Hibernate would
> > > > have a solution for it, but I guess it doesn't.
> > > >
> > > > I've not played with event listeners yet, in general terms what event
> > > > would you hang one onto to do this kind of thing.  WRT recording users
> > > > information, there's nothing in the spec about that, but from what I
> > > > know of the client, I can see that requirement arising sooner or later.
> > > > > On 12/13/07, Rob Hills <[EMAIL PROTECTED]> wrote:
> > > > >
> > > > >> Hi All,
> > > > >>
> > > > >> I'm using AppFuse 2.0 + Struts2 + Hibernate.
> > > > >>
> > > > >> I need to timestamp all of my persisted data.
> > > > >>
> > > > >> I have a base model class that includes a "lastUpdated" attribute 
> > > > >> and I
> > > > >> was hoping to be able to annotate it with something that would tell
> > > > >> Hibernate to timestamp it whenever it was saved to the DB, much as 
> > > > >> you
> > > > >> would do with an "After Update" trigger.
> > > > >>
> > > > >> I've been hunting through the Hibernate documentation to see if it 
> > > > >> has
> > > > >> any "automatic" way of doing this, but haven't turned up anything
> > > > >> obvious.  Hibernate has an @Temporal annotation, but AFAICT, it 
> > > > >> simply
> > > > >> provides a direction about the persisted datatype.
> > > > >>
> > > > >> Is there any way to "automate" this or will I have to do it myself in
> > > > >> the DAO?  If I have to do it myself in the DAO, I assume the most
> > > > >> efficient way will be to have a base DAO class that sits between
> > > > >> GenericDao and my own Dao's and have it do the timestamping
> > >
> > > Hope this helps someone else one day.

Cheers,
Rob Hills
Waikiki, Western Australia
Mobile +61 (412) 904-357
Fax: +61 (8) 9529-2137

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to