Hello there,
I am trying to model a table which has 27 columns. I am using slick 3.1.1. Initially, I did following
class Anomaly(tag:Tag) extends Table[(Int, String, Int, Timestamp, Timestamp, Int, Int, Float, Int, String, String, Int,
Blob, Timestamp, Int, Int, String, Int, Int, String, Int, String, Int, Int, Int, Float, Int)](tag, "Anomaly"){
def id = column[Int]("id")
def serviceName = column[String]("ServiceName")
def serviceId = column[Int]("ServiceId")
def timeUpdated = column[Timestamp]("TimeUpdated")
def timestamp = column[Timestamp]("Timestamp")
def anomalyCategoryId = column[Int]("AnomalyCategoryId")
def userGroup = column[Int]("UserGroup")
def riskValue = column[Float]("RiskValue")
def activityTypeId = column[Int]("ActivityTypeId")
def destinationHost = column[String]("DestinationHost")
def userName = column[String]("UserName")
def tenantId = column[Int]("TenantId")
def information = column[Blob]("Information")
def timeCreated = column[Timestamp]("TimeCreated")
def userId = column[Int]("UserId")
def anomalyType = column[Int]("AnomalyType")
def anomalyValue = column[String]("AnomalyValue")
def measure = column[Int]("Measure")
def userAction = column[Int]("UserAction")
def uniqueIdentifier = column[String]("UniqueIdentifier")
def similarCount = column[Int]("SimilarCount")
def trainingValue = column[String]("TrainingValue")
def state = column[Int]("State")
def riskLevel = column[Int]("RiskLevel")
def userRiskLevel = column[Int]("UserRiskLevel")
def userRiskScore = column[Float]("UserRiskScore")
def response = column[Int]("Response")
def * = (id, serviceName, serviceId, timeUpdated, timestamp, anomalyCategoryId, userGroup,
riskValue, activityTypeId, destinationHost, userName, tenantId, information, timeCreated, userId, anomalyType, anomalyValue,
measure, userAction, uniqueIdentifier, similarCount, trainingValue, state, riskLevel, userRiskLevel, userRiskScore, response)
}
import java.sql.{Blob, Timestamp}
import slick.collection.heterogeneous.HNil
import slick.collection.heterogeneous.syntax._
import slick.driver.MySQLDriver.api._
case class Anomaly1(id: Int, serviceName: String, timeUpdated: Timestamp, timestamp: Timestamp, anomalyCategoryId: Int,
userGroup:Int, riskValue: Float, activityTypeId: Int, destinationHost: String, userName: String)
case class Anomaly2(tenantId: Int, information:Blob, timeCreated: Timestamp, userId: Int, anomalyType:Int, anomalyValue:String, measure:Int,
userAction:Int, uniqueIdentifier:Int, similarCount:Int, trainingValue:String, state: Int, riskLevel:Int, userRiskLevel:Int,
userRiskScore: Float, response:Int)
case class AnomalyC(anomaly1: Anomaly1, anomaly2: Anomaly2)
class Anomaly(tag:Tag) extends Table[AnomalyC](tag, "Anomaly") {
def id = column[Int]("id")
def serviceName = column[String]("ServiceName")
def serviceId = column[Int]("ServiceId")
def timeUpdated = column[Timestamp]("TimeUpdated")
def timestamp = column[Timestamp]("Timestamp")
def anomalyCategoryId = column[Int]("AnomalyCategoryId")
def userGroup = column[Int]("UserGroup")
def riskValue = column[Float]("RiskValue")
def activityTypeId = column[Int]("ActivityTypeId")
def destinationHost = column[String]("DestinationHost")
def userName = column[String]("UserName")
def tenantId = column[Int]("TenantId")
def information = column[Blob]("Information")
def timeCreated = column[Timestamp]("TimeCreated")
def userId = column[Int]("UserId")
def anomalyType = column[Int]("AnomalyType")
def anomalyValue = column[String]("AnomalyValue")
def measure = column[Int]("Measure")
def userAction = column[Int]("UserAction")
def uniqueIdentifier = column[String]("UniqueIdentifier")
def similarCount = column[Int]("SimilarCount")
def trainingValue = column[String]("TrainingValue")
def state = column[Int]("State")
def riskLevel = column[Int]("RiskLevel")
def userRiskLevel = column[Int]("UserRiskLevel")
def userRiskScore = column[Float]("UserRiskScore")
def response = column[Int]("Response")
def * = id :: serviceName :: serviceId :: timeUpdated :: timestamp :: anomalyCategoryId :: userGroup ::
riskValue :: activityTypeId :: destinationHost :: userName :: tenantId :: information :: timeCreated :: userId :: anomalyType :: anomalyValue ::
measure :: userAction :: uniqueIdentifier :: similarCount :: trainingValue :: state :: riskLevel :: userRiskLevel :: userRiskScore :: response :: HNil <>
(Anomaly1.unapply, Anomaly2.unapply)
}
But now I see compilation error as
Error:(60, 13) type mismatch;
found : com.shn.db.tables.Anomaly1 => Option[(Int, String, java.sql.Timestamp, java.sql.Timestamp, Int, Int, Float, Int, String, String)]
required: ((Int, java.sql.Blob, java.sql.Timestamp, Int, Int, String, Int, Int, Int, Int, String, Int, Int, Int, Float, Int)) => Option[(Int, String, java.sql.Timestamp, java.sql.Timestamp, Int, Int, Float, Int, String, String)]
(Anomaly1.unapply, Anomaly2.unapply)
^
Error:(60, 31) type mismatch;
found : com.shn.db.tables.Anomaly2 => Option[(Int, java.sql.Blob, java.sql.Timestamp, Int, Int, String, Int, Int, Int, Int, String, Int, Int, Int, Float, Int)]
required: Option[(Int, String, java.sql.Timestamp, java.sql.Timestamp, Int, Int, Float, Int, String, String)] => Option[(Int, java.sql.Blob, java.sql.Timestamp, Int, Int, String, Int, Int, Int, Int, String, Int, Int, Int, Float, Int)]
(Anomaly1.unapply, Anomaly2.unapply)
^
Error:(59, 154) No matching Shape found.
Slick does not know how to map the given types.
Possible causes: T in Table[T] does not match your * projection. Or you use an unsupported type in a Query (e.g. scala List).
Required level: slick.lifted.FlatShapeLevel
Source type: slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[String],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[java.sql.Timestamp],slick.collection.heterogeneous.HCons[slick.lifted.Rep[java.sql.Timestamp],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Float],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[String],slick.collection.heterogeneous.HCons[slick.lifted.Rep[String],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[java.sql.Blob],slick.collection.heterogeneous.HCons[slick.lifted.Rep[java.sql.Timestamp],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[String],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[String],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[String],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Float],slick.collection.heterogeneous.HCons[slick.lifted.Rep[Int],slick.collection.heterogeneous.HNil.type]]]]]]]]]]]]]]]]]]]]]]]]]]]
Unpacked type: (Int, java.sql.Blob, java.sql.Timestamp, Int, Int, String, Int, Int, Int, Int, String, Int, Int, Int, Float, Int)
Packed type: Any
measure :: userAction :: uniqueIdentifier :: similarCount :: trainingValue :: state :: riskLevel :: userRiskLevel :: userRiskScore :: response :: HNil <>
^
How do I fix it?
Thanks