Squeryl Session Management Using Usage

I am learning Squeryl and trying to understand the syntax of "using", but cannot find the documentation on it.

The following example creates two databases: A contains the word Hello , and B contains Goodbye . The goal is to query the contents of A, and then add the word World and write the result in B.

Expected console output Insert message (2, HelloWorld)

object Test {
    def main(args: Array[String]) {
        Class.forName("org.h2.Driver");
        import Library._

        val sessionA = Session.create(DriverManager.getConnection(
                "jdbc:h2:file:data/dbA","sa","password"),new H2Adapter)
        val sessionB = Session.create(DriverManager.getConnection(
                "jdbc:h2:file:data/dbB","sa","password"),new H2Adapter)

        using(sessionA){
            drop; create
            myTable.insert(Message(0,"Hello"))
        }
        using(sessionB){
            drop; create
            myTable.insert(Message(0,"Goodbye"))
        }

        using(sessionA){
            val results = from(myTable)(s => select(s))//.toList

            using(sessionB){
                results.foreach(m => {
                    val newMsg = m.copy(msg = (m.msg+"World"))
                    myTable.insert(newMsg)
                    println("Inserted "+newMsg)
                })
            }
        }
    }

    case class Message(val id: Long, val msg: String) extends KeyedEntity[Long]
    object Library extends Schema { val myTable = table[Message] }
}

In its original code, the code prints Inserted Message (2, GoodbyeWorld) , unless toList is added to the end of the val results .

sessionA using (sessionB)? toList, .

Dave Whittaker , , "toList" "" .

val results = from(myTable)(s => select(s))

using(sessionA){            
    results.foreach(m => {
        val newMsg = m.copy(msg = (m.msg+"World"))
        using(sessionB){myTable.insert(newMsg)}
        println("Inserted "+newMsg)
    })
}
+5
1

, . using() - , SNAPSHOT. , .

. , , . , Squeryl , AST, SQL, , (sessionA) . , , (sessionA), (sessionB). ?

+3
source

All Articles