2011-03-18 158 views
8

我们如何在ScalaQuery中定义多主键和外键?ScalaQuery多主键和外键

object myTable1 extends Table([Int])("myTable1") { 
    def id = column[Int]("id", O PrimaryKey) 
    def * = id 
}  

object myTable2 extends Table([Int, Int, Int])("myTable2") { 
    def pk1 = column[Int]("id1") 
    def pk2 = column[Int]("id2") 
    def fk1 = column[Int]("fk1") 
    def * = pk1 ~ pk2 ~ fk1 
} 

那么,什么是,如果我想PK1和PK2在myTable2是在myTable2主键和FK-指在ID MYTABLE1使用的代码?

回答

8

下应反对的ScalaQuery主分支:

object myTable2 extends Table([Int, Int, Int])("myTable2") { 
    def pk1 = column[Int]("id1") 
    def pk2 = column[Int]("id2") 
    def fk1 = column[Int]("fk1") 
    def * = pk1 ~ pk2 ~ fk1 
    def pk = primaryKey("pk_myTable2", pk1 ~ pk2) 
    def fkMyTable1 = foreignKey("myTable1_fk", fk1, myTable1)(_.id) 
} 

虽然FK-在myTable2为基础列,fkMyTable1是兼作外键加入外键定义。外键在ScalaQuery 0.9.1中可用,显式主键(具有名称并支持多列)目前在master中可用,并将包含在0.9.2中。你可以在单元测试类ForeignKeyTest和PrimaryKeyTest中找到更多的例子。

+0

感谢您的回复。任何关于何时发布0.9.2的想法?我正在使用ScalaQuery的SBT,所以我没有考虑使用主构建。 – JohanSJA 2011-03-21 03:16:37