Hey Naftoli,
I think something might have broken your first message, It's a blank
message if you view it through the web-interface:
http://groups.google.com/group/liftweb/browse_thread/thread/e2317e5dbaad4a65

If you have a solution I would love to hear it :)

On Feb 5, 1:52 am, Naftoli Gugenheim <naftoli...@gmail.com> wrote:
> Does my approach not work?
>
> -------------------------------------
>
> Mads Hartmann<mads...@gmail.com> wrote:
>
> Yeah that helped, my lab and scientist now looks like this:
>
> /------------------------------- code
>
> trait BaseSourceTrait[ T <:BaseSourceTrait[T] ] extends
> LongKeyedMapper[T] {
>
>         self: T =>
>
>         override def primaryKeyField = id
>         object id extends MappedLongIndex(this)
>
>         object name extends MappedPoliteString(this, 256)
>         object sourceType extends MappedEnum(this,SourceTypes)
>
>         object SourceTypes extends Enumeration {
>                 val Scientist = Value("Scientist")
>                 val     Lab = Value("Lab")
>         }
>
> }
>
> class Scientist extends BaseSourceTrait[Scientist] {
>
>   def getSingleton = Scientist
>
>   object birth extends MappedInt(this)
>   object death extends MappedInt(this)
>   object nationality extends MappedPoliteString(this, 128)
>
> }
>
> object Scientist extends Scientist with LongKeyedMetaMapper[Scientist]
> {
>         override def dbTableName = "Source"
>
> }
>
> class Lab extends BaseSourceTrait[Lab] {
>
>   def getSingleton = Lab
>
>   object institution extends MappedLongForeignKey(this, Institution)
>
> }
>
> object Lab extends Lab with LongKeyedMetaMapper[Lab] {
>         override def dbTableName = "Source"
>
> }
>
> /------------------------------- code ends
>
> My only problem now is that I can't figure out how to implement the
> following:
>
> A Discovery (a mapped class) needs to have a foreign key to the source
> that made the discovery, this could be either a lab or a scientist, so
> normally i would have a field with a reference to the super-class of
> both Scientist and Lab - However, I don't have a super-class, I just
> have a trait :)
>
> I would like to be able to write something like this:
>
> /------------------------------- code starts again
>
> class Discovery extends LongKeyedMapper[Discovery] with IdPK {
>
>         def getSingleton = Discovery
>
>         // primatives
>         object description extends MappedDateTime(this)
>         object year extends MappedInt(this)
>         object reference extends MappedPoliteString(this, 128)
>
>         // relationships
>         object source extends MappedLongForeignKey(this, BaseSourceTrait) //
> <-- this is what i want.
>
> }
>
> object Discovery extends Discovery with LongKeyedMetaMapper[Discovery]
>
> /------------------------------- code ends
>
> As always I truely appreciate the help you guys are giving me :)
>
> Thanks,
> Mads Hartmann Jensen
>
> On Feb 4, 9:56 pm, David Pollak <feeder.of.the.be...@gmail.com> wrote:
>
>
>
>
>
> > Please take a look at the MegaProtoUser and MegaMetaProtoUser code for
> > examples of how to create traits that can be mixed into classes.
>
> > Does that help?
>
> > On Thu, Feb 4, 2010 at 9:58 AM, Mads Hartmann Jensen 
> > <mads...@gmail.com>wrote:
>
> > > hello Jeppe,
>
> > > In my project I've got the following three models: A discovery, a 
> > > Scientist
> > > and a lab. The Discovery has been invented by someone, this is either a
> > > single scientist or sometimes a lab - This is easily done through
> > > inheritance (would create a superclass named source) but I'm not sure how 
> > > to
> > > do this so it maps nicely to the database.
>
> > > Scientist and Lab only share one attribute so what I'm most interested in
> > > is to be able express that a Discovery has s source that can be either a 
> > > lab
> > > or scientist :)
>
> > > Hope this explains my problem more clearly, thanks for the help
>
> > > Mads Hartmann
>
> > > Sent from my iPhone
>
> > > On 04/02/2010, at 18.17, Jeppe Nejsum Madsen <je...@ingolfs.dk> wrote:
>
> > >  Mads Hartmann <mads...@gmail.com> writes:
>
> > >>  Hello Everyone,
>
> > >>> I'm currently trying to figure out how to map objects with inheritance
> > >>> using the Mapper framework. I've got a Lab and a Scientist who inherit
> > >>> from Source.
>
> > >>> As I understand there's no direct way to do inheritance using the
> > >>> Mapper framework so I'm trying to figure out how to implement 'Single
> > >>> Table Inheritance'.
>
> > >>> Right now I'm trying to create a single trait (Source) for the values
> > >>> that they share called BaseSource and my idea is to mix it in both Lab
> > >>> and Scientist. I would then define the table name of both scientist
> > >>> and lab to be the same - I think this would work but what I'm not sure
> > >>> of is the following:
>
> > >>> - If both Scientist and Lab mixes in the IdPK trait and use the same
> > >>> table, will the id still be unique?
> > >>> - A Discovery has a source, how do i create MappedLongForeignKey to
> > >>> the table they share (lab, scientist)?
>
> > >>> I hope you'll be able to help me out :)
>
> > >> I can't say I follow the above :-) Do you want to share tables, code or
> > >> both? Maybe list the table structure and explain how you would like to
> > >> map it....
>
> > >> /Jeppe
>
> > >> --
> > >> You received this message because you are subscribed to the Google Groups
> > >> "Lift" group.
> > >> To post to this group, send email to lift...@googlegroups.com.
> > >> To unsubscribe from this group, send email to
> > >> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com
> > >>  >
> > >> .
> > >> For more options, visit this group at
> > >>http://groups.google.com/group/liftweb?hl=en.
>
> > > --
> > > You received this message because you are subscribed to the Google Groups
> > > "Lift" group.
> > > To post to this group, send email to lift...@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > > liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com
> > >  >
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/liftweb?hl=en.
>
> > --
> > Lift, the simply functional web frameworkhttp://liftweb.net
> > Beginning Scalahttp://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 lift...@googlegroups.com.
> To unsubscribe from this group, send email to 
> liftweb+unsubscr...@googlegroups.com.
> For more options, visit this group 
> athttp://groups.google.com/group/liftweb?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.

Reply via email to