可以输入UUID吗?

时间:2016-03-23 18:32:57

标签: slick

我们假设我们在两个表employersemployees之间有一个普通的父子关系。

employerId中的字段employees实际上只能与id中的employers(以及其他表格中的employerId)相媲美。为了类型安全,我想将employers表示为

class Employees(tag: Tag) extends Table[Employees](tag, "employees")  {
  def id = column[UUID[Employees]]("id") 
  def employerId = column[UUID[Employers]]("employerId")
 ...
}

UUID[Employers]列与另一个UUID[Employers]列以外的任何列进行比较,或使用除了相等之外的任何比较都是荒谬的(在大多数架构中,包括我的),我想要捕获这个事实在编译时。

显然,真正的UUID不采用类型参数,但这种需求很常见。可以吗?

1 个答案:

答案 0 :(得分:1)

正确答案似乎是来自Virtus Labs的Unicorn

  

此库添加了一些工具,可以为您的类使用类型安全的ID,这样您就无法再加入错误的id字段,也不会搞乱映射中的字段顺序。它还提供了一种使用方法创建数据访问层的方法(如查询全部,通过id查询,保存或删除),只需4行代码即可为所有具有此类ID的类创建。