2011-03-18 18 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 में FK1 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) 
} 

जबकि myTable2 में FK1 अंतर्निहित स्तंभ है, fkMyTable1 विदेशी कुंजी परिभाषा जो के रूप में एक विदेशी कुंजी पर शामिल होने के डबल्स है। विदेशी कुंजी ScalaQuery 0.9.1 में उपलब्ध हैं, स्पष्ट प्राथमिक कुंजी (नामों के साथ और एकाधिक कॉलम के लिए समर्थन के साथ) इस समय मास्टर में उपलब्ध हैं और 0.9.2 में शामिल की जाएंगी। आप यूनिट टेस्ट क्लासेस में विदेशी केटेस्ट और प्राथमिक केटेस्ट में अधिक उदाहरण पा सकते हैं।

+0

उत्तर के लिए धन्यवाद। 0.9.2 कब जारी किया जाएगा पर कोई विचार? मैं ScalaQuery के साथ एसबीटी का उपयोग कर रहा हूं इसलिए मैं मास्टर बिल्ड का उपयोग करने की सोच नहीं रहा हूं। – JohanSJA

संबंधित मुद्दे