데이터베이스 (MS SQL 서버 인스턴스)에 특정보기가있는 경우 검사를 자동화하기위한 몇 가지 테스트를 작성하고 있는데, 그렇지 않은 경우 뷰를 사용하여 BasicTable
개체. 뭔가 같은이와 기반Scalaquery를 사용하여 테이블/뷰 존재 여부 테스트하기 (영문)
@Test def CheckAndBuildViewsOnDB() = {
VerifyViewExists(FooTable, BarTable) //FooTable et al defined as:
FooTable extends BasicTable[Foo], where Foo is a case class & FooTable
has a DDL create defined.
}
Stefan Zeiger's assertTablesExist
example에서 cribbing, 내가보기에 대한 DB를 확인하는 약간의 방법을 만들어, 그리고 검사가 발생하는 경우 예외가 부르는 그 뷰의 BasicTable ddl.create
:
def VerifyViewExists(views:BasicTable*) = {
DatabaseSession.session() withSession { //helper class which
initiates a db connection & session
views map {
v => (try queryNA[Int]("select 1 from '"+ v.tableName +"'
where 1<0").list
catch {case _: Exception => v.ddl.create;
println("Couldn't find view "+v.tableName+", creating it
now...");})
} } }
- 이의 의견 매개 변수를 입력 할 수있는 권리 방법이 아니다 : 나에게 합리적인 것처럼 보이지만이 문제가
BasicTable
로, 펑키"error: class BasicTable takes type parameters"
- 뭔가
"error: value tableName is not a member of type parameter T0"
의 결과로,지도 인수 V의 범위와 일어나고 결과.
이 질문에 대한 나의 무지로, 내 뿌리가 스칼라 유형 시스템을 이해하지 못하는 것에 있다고 생각합니다. 그 두 가지 문제와 함께 나는 을 실제로하지 못했다는 느낌이 들었습니다. VerifyViewExists
은 가장 간결하고 읽기 쉬운 스타일입니다.
예, 구문 비트가 누락되었습니다. 감사! – Noel