Hi Jeppe,
I did something similar with the following code:
trait HasUser [T <: HasUser[T]] extends KeyedMapper[Long, T]{
self: T=>
object user extends MappedLongForeignKey(this, User) {
override def dbColumnName = "user_id"
}
}
trait HasUserMetaMapper[T <: HasUser[T]] {
self: T with LongKeyedMetaMapper[T] =>
def findAllByUserId(uid:Long) = findAll(By(user,uid))
}
On Aug 24, 5:31 am, Jeppe Nejsum Madsen <[email protected]> wrote:
> Hi,
>
> I'm trying to create some mixins to be applied to mapper/metamapper
> objects to be used when objects are always owned by an account
> (ie. a multi tenant db)
>
> The mapper parts works fine:
>
> trait OwnedEntity {
> self: BaseMapper =>
>
> object account extends MappedLongForeignKey(this.asInstanceOf[MapperType],
> Account) {
> override def dbColumnName = "account_id"
> override def dbDisplay_? = false
> override def defaultValue = Account.currentAccount
> }
>
> }
>
> but I can't seem to figure out the correct type bounds to create a
> MetaMapper mixin that uses the above. Simple example with just a findMap
> that finds all the entities owned by the current account:
>
> trait MetaOwnedEntity[A <: OwnedEntity] {
> self: A with MetaMapper[A] =>
>
> // Find and map all entities owner by current account
> def findMap[T](f: MapperType => Box[T]) : List[T] = findMap(By(account,
> Account.currentAccount))(f)
>
> }
>
> this fails compilation (1.1-SNAPSHOT), any clues?
>
> EntityUtils.scala:23: error: overloaded method value apply with alternatives
> [O <: net.liftweb.mapper.Mapper[O],T,Q <:
> net.liftweb.mapper.KeyedMapper[T,Q]](net.liftweb.mapper.MappedForeignKey[T,
> O,Q],net.liftweb.util.Box[Q])net.liftweb.mapper.Cmp[O,T] <and> [O <:
> net.liftweb.mapper.Mapper[O],T,Q <:
> net.liftweb.mapper.KeyedMapper[T,Q]](net.liftweb.mapper.MappedForeignKey[T,
> O,Q],Q)net.liftweb.mapper.Cmp[O,T] <and> [O <:
> net.liftweb.mapper.Mapper[O],T,U](net.liftweb.mapper.MappedField[T,O],U)(im
> plicit (U) => T)net.liftweb.mapper.Cmp[O,T] cannot be applied to
> (MetaOwnedEntity.this.account.type,Long)
> def findMap[T](f: MapperType => Box[T]) : List[T] = findMap(By(account,
> Account.currentAccount))(f)
>
> /Jeppe
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---