我必须使用Lift的Mapper(我知道Scala可能有更好的ORM,但这不是我现在有能力改变的东西)。通常,使用Mapper,表以这种方式定义:
package com.sample.model
import net.liftweb.mapper._
class Table extends LongKeyedMapper[Table] with IdPK {
def getSingleton = Table
object other_table_id extends MappedLongForeignKey(this, OtherTable)
object date_field extends MappedDate(this)
object string_field extends MappedString(this, 255)
def toCaseClass = ...
}
object Table extends Table with LongKeyedMetaMapper[Table]
现在我想为Table定义一个案例类来更容易地操作记录,因为Mapper不是非常“Scala-idiomatic”,不是非常类型安全的,绝对不是不可变的。我的案例类看起来像这样:
case class TableCC(id: Long, otherTableId: Long, dateField: Option[Date], ...) {
def toMapper = ...
}
我应该如何命名案例类,我应该把它放在哪里?
答案 0 :(得分:2)
首先,我知道你说你不能使用另一个ORM但是有一些基于案例类的ORM for scala非常好用。 (光滑的工作基本上就像这样,其他几个也是如此)
就个人而言,如果您打算将此案例类用作操作域的主要方法,我会将它们全部放在自己的包中。这样,如果您正在操作域名,则可以执行
import com.sample.model.caseclass._
需要注意几点:
不要将它命名为与case类相同的东西,这会让人感到困惑,我保证在某些时候你会想要在同一个文件中使用这两个类,在这种情况下你必须为它们中的一个添加别名。
我会使用像Table和TableCC这样的命名。这样,在IDE中,您可以轻松找到其中一个。