문서를 통해 업데이트를 컴파일 할 수 있다고하더라도 Slick 3.1에서 업데이트 할 값이 컴파일 된 블록으로 전달되는 업데이트를 컴파일하는 데 문제가 있습니다.Slick 3.1에서 매개 변수화 된 업데이트를 컴파일하는 방법은 무엇입니까?
필자는 비활성화 키가 null 인 주어진 키를 가진 행을 찾고 비활성화 시간을 새로운 타임 스탬프로 설정하려고합니다. 이 날 update
이 Rep[Option[Instant]]
을 수 없다는 불만를 제공, 불행하게도
private[this] lazy val updateDeactiveTime = Compiled { (settingName: Rep[String], time: Rep[Instant]) =>
settings
.filter { row => row.name === settingName && row.deactivatedAt.isEmpty }
.map { _.deactivatedAt }
.update(Some(time))
}
: 내가하고 싶은 것
분명한 것은 이것이다 그것이 Option[Instant]
를 원한다.
슬릭 (불행히도)은 업데이트에서 동적으로 계산 된 값을 사용할 수 없음을 알고 있습니다. 문서별로 제한 작업과 같은 문제 해결 방법은 ConstColumn[…]
을 사용하는 것입니다. 충실하게, 나는 암시 적 변환이나 확장이 있기를 바라고 ConstColumn[Option[Instant]]
을 전달하려고 시도했지만, 여전히 문자 그대로 Option[Instant]
이어야한다는 불만을 얻는다.
물론 리터럴 인스턴트가 있지만 대상 값이 변경 될 때마다 다시 컴파일해야하는 경우 업데이트를 컴파일하는 데 많은 포인트가 없습니다.
LiteralColumn[…]
을 사용하려면 _.value
으로 전화 할 수 있지만 Compiled
으로 전화하면 LiteralColumn
이 필요하지 않습니다. Compiled
또한 내 매개 변수가 time: Instant
일 수 있도록 허용하지 않습니다.