2016-07-13 2 views
-1

다음 코드가 있습니다. 여기서 의심스러운 것이 있습니다.scala Seq 및 map()에 대한 맵이 갑자기 오류없이 실패합니다.

/* 1. */ case class DBCurrencyRate(currency: String, dateTime: Timestamp, rateToEuro: Double) 
/* 2. */ val rates: Map[String, Double] = ... 
/* 3. */ val seqRates = rates.toSeq.map(rate => 
/* 4. */ DBCurrencyRate(rate._1, new Timestamp(date.toInstant.toEpochMilli), rate._2) 
/* 5. */) 
/* 6. */ val action = DBIO.seq(seqRates) 

첫 번째 줄에는 사례 클래스를 선언하고 있습니다. 시간 소인은 java.sql.Timestamp입니다.

두 번째 줄에는 요금이있는지도를 선언합니다.

세 번째 줄에서지도를 적용한 시퀀스로 맵을 변환합니다.

이제 4 번째 줄과 6 번째 줄에 중단 점을 넣으면 4 번째 줄의 중단 점에 도달합니다. 디버거에서 다음 줄로 가거나 6 번째 줄의 다음 중단 점까지 건너 뛰 (실행)하려고해도 실행이 갑자기 어딘가에 있습니다. 나는 어디 있는지 모르지만 아무것도 보이지 않는다. 로그에 추측 또는 기타 오류가 표시되지 않습니다.

rates.seq......DBIO.seq(DBCurrencyRate("EUR", new Timestamp(date.toInstant.toEpochMilli), 2.42))으로 바꿀 수 있습니다.

+0

디버거 버그? 이것은 스칼라 질문처럼 보이지 않습니다. 사용중인 특정 디버거에 대한 버그 보고서와 같습니다. – Dima

+0

IntelliJ 디버거입니다. 디버거가 없어도 DB에 행을 삽입하지 않기 때문에 디버거가 문제라고 생각하지 않습니다. – tzortzik

+1

글쎄, 확실히 디버거 없이는 "아무 곳에도 들어 가지 않습니다"라고하지 않습니까? :) 몇 가지 인쇄 문을 삽입하십시오. 시도/캐치가 어쩌면? – Dima

답변

0

Dima의 제안에 따라 나는 try-catch를 사용하여 Timestamp을 만들 때 UnsupportedOperationException을 캡처했습니다. 문제는 내가 매우 작은 IntTimestamp에 보냈다는 것입니다.

관련 문제