phantom-dsl


Phantom's generated `store` method throws a ClassCastException at runtime


I have the following Phantom table definition:
package myPackage
import com.outworkers.phantom.CassandraTable
import com.outworkers.phantom.connectors.RootConnector
import com.outworkers.phantom.dsl._
import com.outworkers.phantom.keys.{PartitionKey, PrimaryKey}
import scala.concurrent.Future
case class KeysTwoThreeAndFour(myKeyTwo: Int, myKeyThree: String, myKeyFour: Int)
abstract class MyTable extends CassandraTable[MyTable, Int] with RootConnector {
object myKeyOne extends IntColumn(this) with PartitionKey
object myKeyTwo extends IntColumn(this) with PrimaryKey
object myKeyThree extends StringColumn(this) with PrimaryKey
object myKeyFour extends IntColumn(this) with PrimaryKey
object myValue extends IntColumn(this)
def insertValue(myKeyOne: Int, valuesMap: Map[KeysTwoThreeAndFour, Int]): Future[Unit] = {
val resultFutures = for ((key: KeysTwoThreeAndFour, myValue) <- valuesMap) yield {
store(myKeyOne, key.myKeyTwo, key.myKeyThree, key.myKeyFour, myValue).future()
}
Future.sequence(resultFutures).map { _ => () }
}
}
This compiles fine, but at runtime throws the following exception:
java.lang.ClassCastException: scala.Tuple5 cannot be cast to scala.runtime.Nothing$
at myPackage.MyTable$anon$macro$1$1.store(MyTable.scala:10)
at com.outworkers.phantom.CassandraTable.store(CassandraTable.scala:125) ~[com.outworkers.phantom-dsl_2.11-2.7.6.jar:2.7.6]
at myPackage.MyTable$$anonfun$2.apply(MyTable.scala:19)
at myPackage.MyTable$$anonfun$2.apply(MyTable.scala:18)
...
I am following the examples in the bottom of the Phantom table docs, what seems to be the problem? Is the issue perhaps that I have a simple Int as my "Record" type instead of an actual class?
I am using phantom-dsl 2.7.6, Play Framework 2.3.10 and Scala 2.11.11.
Note that the following code works fine:
insert
.value(_.myKeyOne, myKeyOne)
.value(_.myKeyTwo, key.myKeyTwo)
.value(_.myKeyThree, key.myKeyThree)
.value(_.myKeyFour, key.myKeyFour)
.value(_.myValue, myValue)
.future()
Thanks.

Related Links

Phantom's generated `store` method throws a ClassCastException at runtime
Connecting to Cassandra on startup, and monitoring session health
How do I query an optional column with a secondary index using phantom?
How to clean up RootConnector in phantom-dsl?
Phantom Cassandra batch insert

Categories

HOME
developer-tools
android-studio-2.2
twig
components
saml-2.0
pclxl
rendering
opendj
vsm
crystal-reports-2013
fhir
gson
onedrive-api
mongodb-csharp
package.json
fileserver
google-content-api
mapstruct
lilypond
springfox
imagemap
resourcebundle
gmock
appirater
linked-data
winexe
tizen-tv
realm-mobile-platform
autodesk-designautomation
xbox
kudu
mockjax
playstation-portable
clickjacking
android-sugarorm
dsx-desktop
login-script
gojs
alphabetical
wurfl
graphhopper
nohup
node-mssql
metaprogramming
diacritics
news
apriori
subclipse
glm-math
ovf
amq
context-sensitive-grammar
arules
reporting-services-2012
microstation
dotnetnuke-7
neon
x-tag
installshield-2010
observablecollection
swizzling
bizagi
turbo-prolog
uiactionsheet
kendo-upload
ascii-art
rpart
apache-commons-daemon
alloy-ui
canvg
nutiteq
snackbar
xmltype
openbabel
showdialog
contrast
punycode
rickshaw
mdichild
parallel-testing
radiant
file-not-found
fpdi
twitter-bootstrap-rails
gae-quotas
getopt
sphinxql
script#
tlf
gpars
facebook-timeline
joomla-template
twisted.web
alice
midlet
apache-commons-dbutils
urlrewriter
denied
promotion-code
landscape-portrait
mysql-error-1205
lr
unattended-processing
uideviceorientation
delimited-text
qtabbar
cfwindow
software-lifecycle
mathematical-typesetting

Resources

Encrypt Message