0
Anorm을 사용하여 테이블에서 행을 검색하기 위해이 코드를 입력했으나 오류가 발생했습니다. 여기Scala 용 Anorm and Play 2.2를 사용하는 RDBMS에서 선택
case class UserInquiry(
id:Long, description:String
)
object UserInquiry {
val byIdStmt = """
SELECT id, description FROM user_inquiry WHERE id = {id}
"""
def findById(id: Long) = {
DB.withConnection { implicit conn =>
SQL(byIdStmt).on("id" -> id).apply().collect {
case Row(Some(id:Integer), Some(description:String)) =>
new UserInquiry(id.toLong, description)
}.head
}
}
}
// This gives me an error
val id = UserInquiry.findById(7)
오류 발생 : 여기 코드는
[MatchError: Row('ColumnName(user_inquiry.id,Some(id))':4 as java.lang.Integer,
'ColumnName(user_inquiry.description,Some(description))':My search as java.lang.String)
(of class anorm.SqlRow)]
나는 SQL 문에서 'ID'열을 제거하고 전화에만 열을 얻기 위해 나는 코드에서 해당 참조를 제거하는 경우 '설명'은 모든 것이 잘 작동합니다.
'id'열의 문제점은 무엇입니까? java.lang.Integer 열이면 일치하는 이유가 무엇입니까? 어쩌면 DB 'Primary Keys'와 관련된 클래스가 있습니까?
case Row(id:Integer, Some(description:String))
:로 변경할 수
은 'ID'A 열에 PK,
case Row(Some(id:Integer), Some(description:String))
는이 다음 코드 줄 것을 :
올바른 데이터베이스를 사용하고 있는지 확인하십시오. head()를 먼저 호출 한 다음 map을 사용할 수도 있습니다. 나는 그것이 그것이 작동하게 할 것 인 것을 의심한다. 그러나 당신은 수집하는 대신 그것을해야한다. 나는 Anorm을 한번도 사용한 적이 없지만 그렇게 할 수있는 것처럼 보입니다. p –
팁 주셔서 감사합니다. 그러나 작동하지 않았습니다. DB에 관해서, 내가 구성한 유일한 데이터베이스에 연결되어 있습니다. INSERT 및 UPDATES는 예상대로 작동합니다. – Max
ID가 문자열에 매핑되는 것 같습니다 ... –