考虑一下我目前正在研究的以下简化域模型:
case class Product(val id : Long, val name : String, product : Option[Product], category : Option[ProductCategory])
case class Price(val id : Long, val amount : Double, val conditions : Seq[Condition])
trait Condition {
def isTrue(product: Product):Boolean
}
case class ManufacturerNameCondition(val id : Long, val name : String){...}
case class DateCondition(val id : Long, val validFrom : Date, val validTo : Date){...}
这个模型代表什么?
它代表一个简单的价格服务,允许为一个产品或产品类别定义多个价格。产品的最终价格是通过检查其所有匹配价格及其相关条件来确定的。例如,产品可能有一个正常价格和一个额外价格,该价格仅在今天有效,因为它具有 DateCondition。
我的问题是什么? 一个价格可能与多个条件相关联。每个条件可能属于另一种类型。所以我问自己应该如何用 Slick(=多态关系)来解决这个问题。基本上我想要一个类似于 DAO 的界面,它可以获取价格以及相关的条件。
我的问题:
- 是否可以使用 Slick 实现此模型?(大概是)
- 多态关系:在 Slick 中解决这个问题是个好主意吗?Slick 表示它想要克服对象关系不匹配的问题,在这里我感觉好像我试图用这个模型来对抗框架。Slick 在这种面向对象的方法中表现不佳吗?我应该选择另一种方法吗?
请注意: 是的,我没有代码可以显示我尝试过的内容,但现在我需要一些方向来寻找。目前我不知何故迷路了:-)