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 -~----------~----~----~----~------~----~------~--~---
