Of course, that won't prevent whoever uses that class from manually changing
them...

On Fri, Oct 24, 2008 at 9:40 AM, Derek Chen-Becker <[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/toplink-jpa-annotations.html#CHDCHFJJ
>
> 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]> 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]> 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]>
>> 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]> 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]>
>> > > 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]>> 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]>> 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