문제

나는 그것을 사용하고 있습니다.나는 두 가지가있는 경우 Query같은 유형의 관계를 나타내는,나는 거기 참조 union 그러나 나는 그들의 교차점이나 그들의 차이를 얻기 위해 비교 가능한 연산자를 보지 못한다.이러한 연산자는 슬릭에 존재하지 않는?

나는 전술 한 것이 내가 찾고있는 것을 설명한다고 생각하지만,그렇지 않다면 여기에 예가 있습니다.나는 공급자 테이블을 가지고있다:

case class Supplier(snum: String, sname: String, status: Int, city: String)

class Suppliers(tag: Tag) extends Table[Supplier](tag, "suppliers") {
  def snum  = column[String]("snum")
  def sname = column[String]("sname")
  def status   = column[Int]("status")
  def city     = column[String]("city")
  def * = (snum, sname, status, city) <> (Supplier.tupled, Supplier.unapply _)
}
val suppliers = TableQuery[Suppliers]

특정 도시에 있거나 특정 지위를 가진 공급 업체에 대해 알고 싶다면 사용 방법을 참조하십시오 Query.union 그것을 위해:

scala> val thirtySuppliers = suppliers.filter(_.status === 30)
thirtySuppliers: scala.slick.lifted.Query[Suppliers,Suppliers#TableElementType] = scala.slick.lifted.WrappingQuery@166f63a

scala> val londonSuppliers = suppliers.filter(_.city === "London")
londonSuppliers: scala.slick.lifted.Query[Suppliers,Suppliers#TableElementType] = scala.slick.lifted.WrappingQuery@1bea855

scala> (thirtySuppliers union londonSuppliers).foreach(println)
Supplier(S1,Smith,20,London)
Supplier(S4,Clark,20,London)
Supplier(S3,Blake,30,Paris)
Supplier(S5,Adams,30,Athens)

문제 없습니다.하지만 난 단지 공급 업체를 원하는 경우 둘 다 특정 도시 그리고 특정 상태가 있습니까?내가 뭔가를 할 수 있어야하는 것처럼 보인다:

(thirtySuppliers intersect londonSuppliers).foreach(println)

또는 특정 도시에 공급자를 원하는 경우 제외 특정한 지위를 가진 사람들.나는 같은 일을 할 수 없다:

(thirtySuppliers except londonSuppliers).foreach(println)

UNION, INTERSECT,그리고 EXCEPT 운영 및 슬릭의 Query 클래스는 union 쿼리를 빌드하는 메서드 UNION,그러나 나는 보지 않고있다 Query 교차점이나 차이를 유도하기위한 슬릭의 방법.나는 그들을 놓치고 있습니까?

도움이 되었습니까?

해결책

이를 구현하는 풀 요청이 있습니다.그것은 2.0 또는 2.1 로 만들 것입니다. https://github.com/slick/slick/pull/242 우리는 여전히 몇 가지 세부 사항을 파악하고 조금 정리해야합니다.

다른 팁

이 연산은 교차점이 두 개의 필터가 될 수 있다는 점에서 거의 구성 가능합니다.예를 들어

val intersect = suppliers.filter(_.status === 30).filter(_.city === "London")

또는 제외:

val except= suppliers.filter(_.city === "London").filterNot(_.status === 30)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top