2011-03-18 43 views
8

Làm cách nào để chúng tôi xác định nhiều khóa chính và khóa ngoài trong ScalaQuery?ScalaQuery nhiều khóa chính và khóa ngoài

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 
} 

Vì vậy, các mã để sử dụng nếu tôi muốn PK1 và PK2 trong myTable2 là khóa chính và fk1 trong myTable2 để chỉ id trong myTable1 là gì?

Trả lời

8

Sau đây nên làm việc chống lại các chi nhánh chủ 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) 
} 

Trong khi fk1 trong myTable2 là cột cơ bản, fkMyTable1 là định nghĩa chính nước ngoài được sử dụng như một tham gia vào các khoá ngoại. Các khóa ngoại có sẵn trong ScalaQuery 0.9.1, các khóa chính rõ ràng (có tên và với sự hỗ trợ cho nhiều cột) có sẵn trong bản gốc tại thời điểm này và sẽ được bao gồm trong 0.9.2. Bạn có thể tìm thêm ví dụ trong các lớp kiểm tra đơn vị ForeignKeyTest và PrimaryKeyTest.

+0

cảm ơn câu trả lời. Bất kỳ ý tưởng về khi nào 0.9.2 sẽ được phát hành? Tôi đang sử dụng SBT với ScalaQuery vì vậy tôi không nghĩ đến việc sử dụng xây dựng tổng thể. – JohanSJA

Các vấn đề liên quan