Happy! Happy! Joy! Joy!

I don't know how I missed this in your email of the 18th. Brain full, I 
guess. This works perfectly and it is exactly the way it should be.

Thank you very much.

Chas.

Derek Chen-Becker wrote:
> Bingo :)
> 
> On Fri, Oct 24, 2008 at 9:50 AM, Tim Perrett <[EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]>> wrote:
> 
> 
>     Actually - sorry, im being dull, the annotation marks it for
>     invocation doesnt it. Doh.
> 
>     On Oct 24, 4:49 pm, Tim Perrett <[EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>> wrote:
>      > Oh thats really nice - was not aware of those!
>      >
>      > One thing thats not clear from that code; how do markCreateTime and
>      > markUpdateTime get called? They dont appear to be invoked anywhere?
>      >
>      > Cheers, Tim
>      >
>      > On Oct 24, 4:40 pm, "Derek Chen-Becker" <[EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>> wrote:
>      >
>      > > It's a JPA annotation for lifecycle methods. There's a really
>     nice chart
>      > > explaining when they get called here:
>      >
>      >
>      >http://www.oracle.com/technology/products/ias/toplink/jpa/resources/t...
>      >
>      > > Basically, for what Chas wants to do, I'd do something like
>      >
>      > > //define fields
>      > > @Temporal{val value = TemporalType.TIMESTAMP}
>      > > var createTime : Date = _
>      >
>      > > @Temporal{val value = TemporalType.TIMESTAMP}
>      > > var updateTime : Date = _
>      >
>      > > @PrePersist
>      > > def markCreateTime = { createTime = new Date; updateTime =
>     createTime }
>      >
>      > > @PreUpdate
>      > > def markUpdateTime = { updateTime = new Date }
>      >
>      > > Derek
>      >
>      > > On Fri, Oct 24, 2008 at 9:27 AM, Tim Perrett
>     <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:
>      >
>      > > > Hey Derek,
>      >
>      > > > Whats @PrePersist - cant say im that familiar with it?
>      >
>      > > > Cheers
>      >
>      > > > Tim
>      >
>      > > > On Oct 24, 4:10 pm, "Derek Chen-Becker"
>     <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:
>      > > > > Personally I use the @PrePersist lifecycle method
>     interceptor when I want
>      > > > to
>      > > > > do things like record dates. Not quite as concise as the
>     Hibernate stuff,
>      > > > > but it's more flexible since you control the logic for what
>     gets
>      > > > > set/updated.
>      >
>      > > > > Derek
>      >
>      > > > > On Fri, Oct 24, 2008 at 5:16 AM, Tim Perrett
>     <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
>      > > > wrote:
>      >
>      > > > > > I think you should be able to do this by using an
>     interceptor or event
>      > > > > > listener - does this article help:
>      >
>      > > > > >http://java.dzone.com/articles/using-a-hibernate-interceptor-
>      >
>      > > > > > If you manage to get the created_on and updated_at stuff
>     working I'd
>      > > > > > be interested in how you did it as I think its something
>     we should be
>      > > > > > using.
>      >
>      > > > > > Cheers
>      >
>      > > > > > Tim
>      >
>      > > > > > On Oct 22, 9:38 am, "Viktor Klang"
>     <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:
>      > > > > > > After migrating from Hibernate 3.0 to 3.3.1 the past 2
>     weeks I have
>      > > > > > gained
>      > > > > > > some hatred towards Hibernate.
>      >
>      > > > > > > I had to write atleast 3 workarounds to Hibernate bugs.
>     No cool at
>      > > > all.
>      > > > > > :/
>      >
>      > > > > > > I feel your pain,
>      >
>      > > > > > > cheers,
>      > > > > > > Viktor
>      >
>      > > > > > > On Wed, Oct 22, 2008 at 1:41 AM, Charles F. Munat
>     <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
>      > > > > > wrote:
>      >
>      > > > > > > > Nope. Turns out this is a really poorly explained
>     "feature" of
>      > > > > > Hibernate
>      > > > > > > >  (and, in the opinion of many, a really dumb one). My
>     code was
>      > > > correct,
>      > > > > > > > and the problem isn't anything Scala-related. In
>     order for this
>      > > > code to
>      > > > > > > > work, the *database* has to generate the values, e.g.
>     via a
>      > > > trigger,
>      > > > > > > > which I, the designer, have to add.
>      >
>      > > > > > > > Sheesh. The whole point of Hibernate, I thought, was
>     that I don't
>      > > > have
>      > > > > > > > to deal with the database end. Why this can't just
>     add the triggers
>      > > > for
>      > > > > > > > me is beyond me. It's easier just to set them in the
>     application, I
>      > > > > > think.
>      >
>      > > > > > > > Thanks for the help. Live and learn, I guess.
>      >
>      > > > > > > > Chas.
>      >
>      > > > > > > > Derek Chen-Becker wrote:
>      > > > > > > > > Yeah, I think you want insertable to be true on the
>     first one
>      > > > (just
>      > > > > > omit
>      > > > > > > > > the insertable val) and on the second one you want
>     to omit both
>      > > > > > > > > insertable and updatable to make them both true.
>      >
>      > > > > > > > > Derek
>      >
>      > > > > > > > > On Tue, Oct 21, 2008 at 6:00 AM, Viktor Klang <
>      > > > > > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>      > > > > > > > > <mailto:[EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>>> wrote:
>      >
>      > > > > > > > >     But both are updatable false and insertable false?
>      >
>      > > > > > > > >     I might be daft, but that doesn't look good to
>     me...
>      >
>      > > > > > > > >     Cheers
>      > > > > > > > >     Viktor
>      >
>      > > > > > > > >     On Tue, Oct 21, 2008 at 5:06 AM, Charles F. Munat <
>      > > > > > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>      > > > > > > > >     <mailto:[EMAIL PROTECTED]
>     <mailto:[EMAIL PROTECTED]>>> wrote:
>      >
>      > > > > > > > >         In my Lift app based on the JPA demo I
>     tried this, which
>      > > > > > should
>      > > > > > > > work
>      > > > > > > > >         beautifully according to everything I've
>     been able to get
>      > > > my
>      > > > > > > > >         hands on:
>      >
>      > > > > > > > >         @Temporal(TemporalType.TIMESTAMP)
>      > > > > > > > >         @Column{val name="CREATED_AT", val
>     updatable = false,
>      > > > > > > > >           val insertable = false}
>      >
>      > > >
>     
> @org.hibernate.annotations.Generated(org.hibernate.annotations.GenerationTi
>      > > > > > me.INSERT)
>      > > > > > > > >         var createdAt : Date = new Date()
>      >
>      > > > > > > > >         @Temporal(TemporalType.TIMESTAMP)
>      > > > > > > > >         @Column{val name="UPDATED_AT", val
>     updatable = false,
>      > > > > > > > >           val insertable = false}
>      >
>      > > >
>     
> @org.hibernate.annotations.Generated(org.hibernate.annotations.GenerationTi
>      > > > > > me.ALWAYS)
>      > > > > > > > >           var updatedAt : Date = new Date()
>      >
>      > > > > > > > >         This should, if I'm right, set an immutable
>     created_at
>      > > > > > timestamp
>      > > > > > > > >         and a
>      > > > > > > > >         mutable updated_at timestamp upon insert,
>     and update the
>      > > > > > > > updated_at
>      > > > > > > > >         timestamp upon each update.
>      >
>      > > > > > > > >         What it actually does is leave both fields
>     null. What a
>      > > > drag.
>      >
>      > > > > > > > >         Any ideas? Is this a Scala thing? Am I
>     missing something
>      > > > > > really
>      > > > > > > > >         obvious,
>      > > > > > > > >         as usual?
>      >
>      > > > > > > > >         Thanks,
>      >
>      > > > > > > > >         Chas.
>      >
>      > > > > > > > >     --
>      > > > > > > > >     Viktor Klang
>      > > > > > > > >     Senior Systems Analyst
>      >
>      > > > > > > --
>      > > > > > > Viktor Klang
>      > > > > > > Senior Systems Analyst
> 
> 
> 
> > 

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to