If you wrap your JPA stuff in a trait like:
trait Builder[T] {
def create: T
}
Thus, you've got a type-safe create method... you'd use it like:
object UserSingleton extends Builder[User] {
def create = new User
def user: User = Model.createNamedQuery[User](....).findOne openOr create
}
On Mon, Dec 1, 2008 at 6:24 AM, Derek Chen-Becker <[EMAIL PROTECTED]>wrote:
> Because it's type erasure I don't think I can do a generic "new" inside the
> methods, but the findOne method does return a Can. That means that you were
> actually pretty close in your demo code. Here's what it could look like:
>
> val user: User =
> Model.createNamedQuery[User](
> "findUserByUsername",
> "username" -> "hal"
> ).findOne or (new User)
>
> Derek
>
>
> On Mon, Dec 1, 2008 at 2:24 AM, Charles F. Munat <[EMAIL PROTECTED]> wrote:
>
>>
>> That will probably work. I was thinking it would be nice to build in a
>> method findOrNew that would do it for me... but it looks like that might
>> involve some sort of implicit manifest thingy, so I don't know.
>>
>> Chas.
>>
>> Viktor Klang wrote:
>> >
>> >
>> > On Mon, Dec 1, 2008 at 7:12 AM, Charles F. Munat <[EMAIL PROTECTED]
>> > <mailto:[EMAIL PROTECTED]>> wrote:
>> >
>> >
>> > Is there a simple way in JPA/Lift to query to retrieve a single
>> object
>> > from the database, assign it to a val if found, or create a new
>> object
>> > of that type and assign it instead of there is no such object in the
>> > database?
>> >
>> > Sort of a...
>> >
>> > val user: User =
>> > Model.createNamedQuery(
>> > "findUserByUsername",
>> > "username" -> "hal"
>> > ).findOr(new User())
>> >
>> >
>> > (Can ! (yourQuery.uniqueResult)).openOr(new User())
>> >
>> > Should work?
>> >
>> >
>> >
>> > or something like that? That would be very useful.
>> >
>> > Thanks,
>> > Chas.
>> >
>> >
>> >
>> >
>> >
>> > --
>> > Viktor Klang
>> > Senior Systems Analyst
>> >
>> > >
>>
>>
>>
>
> >
>
--
Lift, the simply functional web framework http://liftweb.net
Collaborative Task Management http://much4.us
Follow me: http://twitter.com/dpp
Git some: http://github.com/dpp
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---