Not offhand, maybe some discussion will generate an good plan.The easiest and worst way would be to have a marker trait or a flag, and test in each MappedXXX. Obviously not a good idea. What may work is to delegate all the code that makes decisions which depend on optionality to a method in MappedField, and override that method in a trait that can be mixed in. I haven't actually looked at the relevant Mapper code; just saying a thought.
On Mon, Oct 12, 2009 at 1:31 PM, David Pollak <[email protected] > wrote: > If you've got a good way to do this, feel encouraged to develop it on a > branch. > > > On Sun, Oct 11, 2009 at 8:22 PM, Naftoli Gugenheim > <[email protected]>wrote: > >> It would be nice if there could be a generalized way of specifying >> optionality for fields.(The first though question is whether the default >> behavior is consistent -- do all field types equate NULL with their >> default?) >> I pasted the names of all the field types (by listing all Mapped*.class >> files in target/classes/net/liftweb/mapper). For which of them does it make >> sense to have optionality, which of them do, and would it make sense to have >> a trait to mix in or some other consistent way to allow nullablility? >> >> >> MappedBinary, MappedBirthYear, MappedBoolean, MappedCountry, MappedDate, >> MappedDateTime, MappedDecimal, MappedDouble, MappedEmail, MappedEnum, >> MappedEnumList, MappedFakeClob, MappedForeignKey, MappedGender, MappedInt, >> MappedIntIndex, MappedLocale, MappedLong, MappedLongForeignKey, >> MappedLongIndex, MappedPassword, MappedPoliteString, MappedPostalCode, >> MappedString, MappedStringForeignKey, MappedStringIndex, MappedText, >> MappedTextarea, MappedTime, MappedTimeZone, MappedUniqueId >> >> >> On Wed, Oct 7, 2009 at 4:36 PM, David Pollak < >> [email protected]> wrote: >> >>> >>> >>> On Wed, Oct 7, 2009 at 12:55 PM, harryh <[email protected]> wrote: >>> >>>> >>>> I have a long field in my database that I want to have a unique index >>>> (enforced by the database). Sometimes this field will be empty, in >>>> which case I'd like to set it to NULL. 0 won't work because that >>>> won't work with the unique index. >>>> >>>> MappedLong appears to be converting null to 0 internally. >>>> Additionally overriding defaultValue for the field and returning null >>>> does not appear to work. >>>> >>>> Is this by design? >>> >>> >>> Yes. >>> >>> >>>> Is it possible that I am misunderstanding something >>>> here? >>>> >>> >>> I think you're looking for a MappedOptLong which will treat None (or >>> Empty) as NULL and Some(Long) as the value. >>> >>> Please open a ticket and I'll add the code. >>> >>>> >>>> -harryh >>>> >>>> >>>> >>> >>> >>> -- >>> Lift, the simply functional web framework http://liftweb.net >>> Beginning Scala http://www.apress.com/book/view/1430219890 >>> Follow me: http://twitter.com/dpp >>> Surf the harmonics >>> >>> >>> >>> >> >> >> > > > -- > Lift, the simply functional web framework http://liftweb.net > Beginning Scala http://www.apress.com/book/view/1430219890 > Follow me: http://twitter.com/dpp > Surf the harmonics > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
