3

Exposed version: 0.28.1

Kotlin version: 1.5.0

Database: PostgreSQL 9.4

Hi, I´m newbie with Exposed ORM Framework. I need to update a table column value with another column value in the same table, the two column types are datetime. On PostgreSQL would be something like this:

update order_details set production_date = current_timestamp - registry_date 

How can I do it on Exposed ORM? This is my entity:

object OrderDetails : Table (name = "detalle_orden") {
    val id = integer("id").autoIncrement("detalle_orden_id_seq")
    val sellDetail = integer("detalle_venta").references(SellDetails.id)
    val order = integer("orden")
    val registryDate = datetime("fecha_registro")
    val registryHour = varchar("hora_registro", 30).nullable()
    val productionDate = datetime("fecha_produccion").nullable()
    val productionHour = varchar("hora_produccion", 30).nullable()
    val finishedDate = datetime("fecha_terminado").nullable()
    val finishedHour = varchar("hora_terminado", 30).nullable()
    val deliveryDate = datetime("fecha_entregado").nullable()
    val deliveryHour = varchar("hora_entregado",30).nullable()
    val observations = varchar("observaciones", 500)

    override val primaryKey = PrimaryKey(id, name = "detalle_orden_pkey")
}
leoLR
  • 462
  • 2
  • 6
  • 21

1 Answers1

1

As Tapac said in comments, this use case is in the wiki: https://github.com/JetBrains/Exposed/wiki/DSL#update

OrderDetails.update({ OrderDetails.id eq 8 }) {
    with(SqlExpressionBuilder) {
       it.update(OrderDetails.productionDate, OrderDetails.registryDate + OffsetDateTime.now())
       // or 
       it[OrderDetails.productionDate] = OrderDetails.registryDate + OffsetDateTime.now())
    }
} 
Rich
  • 11
  • 2