2012-04-04 1 views
2

heck HOM 라이브러리를 사용하여 cassandra 데이터 저장소에 액세스하고 있습니다. 이 라이브러리는 Java로 작성되었으며 Collections를 사용할 때 약간의 고찰을 사용합니다.컬렉션 형식을 스칼라에서 Java로 변환하는 중 문제가 발생했습니다.

검색하려는 문자열 목록이 포함 된 java 모델이 있습니다. 불행하게도 나는 다음과 같은 예외가 얻을 : 나는를 java.util.List 객체를 생성 명시 적으로 시도

Execution exception [[HectorObjectMapperException: exception while instantiating Collection type, scala.collection.JavaConversions$SeqWrapper]] 

Caused by: me.prettyprint.hom.cache.HectorObjectMapperException: exception while instantiating Collection type, scala.collection.JavaConversions$SeqWrapper 
    at me.prettyprint.hom.CollectionMapperHelper.instantiateCollection(CollectionMapperHelper.java:87) ~[hector-object-mapper-3.0-02.jar:na] 
    at me.prettyprint.hom.HectorObjectMapper.createObject(HectorObjectMapper.java:297) ~[hector-object-mapper-3.0-02.jar:na] 
    at me.prettyprint.hom.HectorObjectMapper.getObject(HectorObjectMapper.java:105) ~[hector-object-mapper-3.0-02.jar:na] 
    at me.prettyprint.hom.EntityManagerImpl.find(EntityManagerImpl.java:132) ~[hector-object-mapper-3.0-02.jar:na] 
Caused by: java.lang.InstantiationException: scala.collection.JavaConversions$SeqWrapper 
    at java.lang.Class.newInstance0(Class.java:340) ~[na:1.6.0_29] 
    at java.lang.Class.newInstance(Class.java:308) ~[na:1.6.0_29] 
    at me.prettyprint.hom.CollectionMapperHelper.instantiateCollection(CollectionMapperHelper.java:75) ~[hector-object-mapper-3.0-02.jar:na] 
    at me.prettyprint.hom.HectorObjectMapper.createObject(HectorObjectMapper.java:297) ~[hector-object-mapper-3.0-02.jar:na] 

을하지만 여전히 같은 문제가 발생합니다.

val geoModel = new GeoModel(geoRK) 
val thingList: java.util.List[java.lang.String] = things match { 
    case Some(t) => t.map(s => s.toString()) 
    case None => new java.util.ArrayList() 
} 
geoModel.setThings(thingList) 
geoDAO.upsertModel(geoModel) 

모델은 미세 지속 내가 같이 카산드라에서 볼 수 있습니다 : 그것은 헥터 doens 나타납니다 다시 객체를 검색 할 때

(column=things, value=scala.collection.JavaConversions$SeqWrapper:0, timestamp=1333555422145002) 

문제 여기 내 코드를 작성하고 내 모델을 유지하는 것입니다 scala.collection 유형을 처리하는 방법을 알지 못합니다.

어쨌든이 문제를 해결할 수 있습니까?

감사합니다.

답변

0

편집 :

당신은 그러나 귀하의 목록에 자신의를 java.util.List를 만들 수

죄송합니다 ... 오해의 소지가 동일 반환 scala.collection.JavaConversions $ SeqWrapper의를 toString IMPL ... 해결 방법.

원래 : 당신이 collections.JavaConverters을 사용할 수

대신 collection.JavaConversion의.

scala> import collection.JavaConverters._ 
import collection.JavaConverters._ 

scala> List(1,2,3).asJava 
res1: java.util.List[Int] = [1, 2, 3] 
0
나는 사실 인 java.util.ArrayList [문자열]로 내 목록을 초기화하는 대신지도 기능은 새 목록 생성 할 수 있도록함으로써 주위 가지고

:

val thingList = new java.util.ArrayList[String] 
things match { 
    case Some(t) => t.map(s => thingList.add(s)) 
    case None => new java.util.ArrayList() 
} 
+0

당신은 사용해야은'대신 foreach' 'map'의 결과를 사용하지 않는다면'map'을 사용하십시오. – drexin

관련 문제