使用 Squeryl(使用 Lift),如何使两个模型 class 成为相同 class 的子 class?
WIth Squeryl (using Lift), how can I make two model classes a subclass of the same class?
将 Lift 与 Squeryl 一起使用,我怎样才能使两个 class 成为同一个 class 的子class?
我的 class 如下所示:
class SubClass1 extends Record[SubClass1] with KeyedRecord[SubClass1] with CreatedUpdated[SubClass1] {
val id = ...
val field1a = StringField(...)
...
}
class SubClass2 extends Record[SubClass2] with KeyedRecord[SubClass2] with CreatedUpdated[SubClass2] {
val id = ...
val field2a = StringField(...)
}
我希望 SubClass1
和 SubClass2
都成为其他 class 的 child class,比如 MyParentClass。所以我认为我必须做这样的事情:
abstract class MyParentClass extends Record[MyParentClass] with KeyedRecord[MyParentClass] with CreatedUpdated[MyParentClass] {}
然后
class SubClass1 extends MyParentClass {
val id = ...
val field1a = StringField(...)
...
}
class SubClass2 extends MyParentClass {
val id = ...
val field2a = StringField(...)
...
}
这给我错误,例如字段 (StringField
) 等不符合正确的类型。有关如何执行此操作的任何建议?
谢谢,
您的抽象超类不能定义具体类型参数,因为它需要被子类重写。尝试:
abstract class MyParentClass[A <: MyParentClass]
extends Record[A] with KeyedRecord[A] with CreatedUpdated[A]
然后:
class SubClass extends MyParentClass[SubClass]
将 Lift 与 Squeryl 一起使用,我怎样才能使两个 class 成为同一个 class 的子class?
我的 class 如下所示:
class SubClass1 extends Record[SubClass1] with KeyedRecord[SubClass1] with CreatedUpdated[SubClass1] {
val id = ...
val field1a = StringField(...)
...
}
class SubClass2 extends Record[SubClass2] with KeyedRecord[SubClass2] with CreatedUpdated[SubClass2] {
val id = ...
val field2a = StringField(...)
}
我希望 SubClass1
和 SubClass2
都成为其他 class 的 child class,比如 MyParentClass。所以我认为我必须做这样的事情:
abstract class MyParentClass extends Record[MyParentClass] with KeyedRecord[MyParentClass] with CreatedUpdated[MyParentClass] {}
然后
class SubClass1 extends MyParentClass {
val id = ...
val field1a = StringField(...)
...
}
class SubClass2 extends MyParentClass {
val id = ...
val field2a = StringField(...)
...
}
这给我错误,例如字段 (StringField
) 等不符合正确的类型。有关如何执行此操作的任何建议?
谢谢,
您的抽象超类不能定义具体类型参数,因为它需要被子类重写。尝试:
abstract class MyParentClass[A <: MyParentClass]
extends Record[A] with KeyedRecord[A] with CreatedUpdated[A]
然后:
class SubClass extends MyParentClass[SubClass]