У меня есть Scala def, который принимает параметры из HTTP POST и анализирует данные. Я вытаскиваю объект «job» из базы данных (запрос был успешным, как было проверено в отладчике, и параметры такие же, как и должны быть), и я пытаюсь обновить этот объект задания новыми параметрами. Однако попытка присвоения значений оказывается бесполезной, поскольку объект задания сохраняет все исходные значения.Как правильно установить значение объекта в Scala?
Все объекты базы данных принадлежат Squeryl. Код ниже:
Редактировать: добавлен класс ниже и объект Job, чтобы контекст воспроизводить в этой игре! приложение
object Job {
def updateFromParams(params:Params) = {
val job = Job.get(params.get("job_id").toLong).get
val comments = params.get("comments")
val startTime = parseDateTime(params.get("start_time") + " " + params.get("date"))
val endTime = parseDateTime(params.get("end_time") + " " + params.get("date"))
val clientId = params.get("client_id").toLong
val client = Client.get(clientId).get
val name = params.get("job_name")
val startAddressType = params.get("start_address_type")
var startLocationId:Option[Long] = None
val (startAddress, startCity, startProvince) = startAddressType match {
case "client" => getClientAddress(clientId)
case "custom" => (params.get("start_custom_address"),
params.get("start_custom_city"),
params.get("start_custom_province"))
case id => {
startLocationId = Some(id.toLong)
getLocationAddress(startLocationId.get)
}
}
job.comments -> comments
job.startTime -> startTime
job.endTime -> endTime
job.clientId -> clientId
job.name -> name
job.startAddressType -> startAddressType
job.startAddress -> startAddress
job.startCity -> startCity
job.startProvince -> startProvince
Job.update(job)
}
}
Я озадачен, потому что если я пытаюсь job.name -> name
ничего не происходит, и если я пытаюсь job.name = name
тогда я получаю ошибку reassignment to val
Scala. Я получаю ту же ошибку при попытке var name
вместо val name
.
Это, очевидно, проблема синтаксиса с моей стороны, каков правильный способ справиться с этим? Благодаря!
Дополнительная информация:, если это помогает, вот класс работы, используемый в нашей игре! Приложение:
class Job(
val id: Long,
@Column("name")
val name: String,
@Column("end_time")
val endTime: Timestamp,
@Column("start_time")
val startTime: Timestamp,
@Column("client_id")
val clientId: Long,
@Column("start_address_type")
var startAddressType:String,
@Column("start_address")
var startAddress: String,
/* LOTS MORE LIKE THIS */
) extends KeyedEntity[Long] {
}
'x -> y' создает Tuple' (x, y) '. Это не оператор присваивания. Каково определение «Работа»? – leedm777
Когда вы говорите, что вы меняете на 'var name', вы имеете в виду в этом коде или в определении' Job'? –
'Работа' - это класс и модель в игре! фреймворк. Я добавлю класс в вопрос выше. :) – crockpotveggies