mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-24 21:07:26 +08:00
added more wrapper types
This commit is contained in:
parent
235ef3648c
commit
dcb28b4c8a
BIN
querydsl-scala/.cache
Normal file
BIN
querydsl-scala/.cache
Normal file
Binary file not shown.
@ -15,7 +15,7 @@
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
<scala.version>2.8.1</scala.version>
|
||||
<scala.version>2.9.1</scala.version>
|
||||
<hibernate.version>3.5.1-Final</hibernate.version>
|
||||
<hibernate.validator.version>4.0.2.GA</hibernate.validator.version>
|
||||
</properties>
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
package com.mysema.query.scala
|
||||
|
||||
import scala.collection.JavaConversions._
|
||||
import com.mysema.query._
|
||||
import com.mysema.query.types._
|
||||
|
||||
object Helpers {
|
||||
|
||||
implicit def toRichSimpleProjectable[T](p: SimpleProjectable[T]) = new RichSimpleProjectable(p)
|
||||
|
||||
implicit def toRichProjectable(p: Projectable) = new RichProjectable(p)
|
||||
|
||||
}
|
||||
|
||||
class RichSimpleProjectable[T](private val p: SimpleProjectable[T]) {
|
||||
|
||||
def select: List[T] = p.list.toList
|
||||
|
||||
def single: Option[T] = Option(p.singleResult())
|
||||
|
||||
def unique: Option[T] = Option(p.uniqueResult())
|
||||
|
||||
}
|
||||
|
||||
class RichProjectable(private val p: Projectable) {
|
||||
|
||||
def select[T](expr: Expression[T]): List[T] = p.list(expr).toList
|
||||
|
||||
def select[T,U](expr1: Expression[T], expr2: Expression[U]): List[(T,U)] = {
|
||||
p.list(expr1, expr2).toList map(r => (r(0).asInstanceOf[T], r(1).asInstanceOf[U]))
|
||||
}
|
||||
|
||||
def select[T,U,V](expr1: Expression[T], expr2: Expression[U], expr3: Expression[V]): List[(T,U,V)] = {
|
||||
p.list(expr1, expr2, expr3).toList map(r => (r(0).asInstanceOf[T], r(1).asInstanceOf[U], r(2).asInstanceOf[V]))
|
||||
}
|
||||
|
||||
def select[T,U,V,W](expr1: Expression[T], expr2: Expression[U], expr3: Expression[V], expr4: Expression[W]): List[(T,U,V,W)] = {
|
||||
p.list(expr1, expr2, expr3, expr4)
|
||||
.map(r => (r(0).asInstanceOf[T], r(1).asInstanceOf[U], r(2).asInstanceOf[V], r(3).asInstanceOf[W])).toList
|
||||
}
|
||||
|
||||
// TODO : generalize this
|
||||
def selectGrouped[K,T,V](expr1: Expression[K], expr2: Expression[T], expr3: Expression[V]): List[(T,List[V])] = {
|
||||
select(expr1, expr2, expr3).groupBy(_._1).map(_._2).map(r => (r(0)._2, r.map(_._3))).toList
|
||||
}
|
||||
|
||||
def single[T](expr: Expression[T]): Option[T] = Option(p.singleResult(expr))
|
||||
|
||||
def unique[T](expr: Expression[T]): Option[T] = Option(p.uniqueResult(expr))
|
||||
|
||||
}
|
||||
@ -1,28 +0,0 @@
|
||||
package com.mysema.query.scala;
|
||||
|
||||
import com.mysema.query._;
|
||||
import com.mysema.query.types._;
|
||||
|
||||
object Queries {
|
||||
|
||||
implicit def toScalaProjectable(qry: Projectable) = new ScalaProjectable(qry)
|
||||
|
||||
implicit def toScalaProjectable[T](qry: SimpleProjectable[T]) = new SimpleScalaProjectable[T](qry);
|
||||
|
||||
}
|
||||
|
||||
class ScalaProjectable(val qry: Projectable) {
|
||||
|
||||
def unique[T](e: Expression[T]) = Option(qry.uniqueResult(e))
|
||||
|
||||
def single[T](e: Expression[T]) = Option(qry.singleResult(e))
|
||||
|
||||
}
|
||||
|
||||
class SimpleScalaProjectable[T](val qry: SimpleProjectable[T]) {
|
||||
|
||||
def unique = Option(qry.uniqueResult())
|
||||
|
||||
def single = Option(qry.singleResult())
|
||||
|
||||
}
|
||||
@ -2,7 +2,7 @@ package com.mysema.query.scala;
|
||||
|
||||
//import com.mysema.query._
|
||||
import com.mysema.query.types._
|
||||
import com.mysema.query.scala.Queries._
|
||||
import com.mysema.query.scala.Helpers._
|
||||
import com.mysema.query.scala.Conversions._
|
||||
|
||||
import com.mysema.query.jpa.impl.JPAQuery
|
||||
Loading…
Reference in New Issue
Block a user