vok-orm 删除关连资料 - day11

vok-orm 删除关连资料

由於 vok-orm 非 JPA、Hibernate 那一类的框架,查询也好删除也好,并不会有一连串的关连式资料的连动作业。笔者个人对这样的方式是非常偏好的,从资料表的建立到查询、资料删除,都不会有看不到的背景执行作业。

一般而言,删除主表必需连同副表一并删除。在本例中学生资料是主表,学生成绩为副表,刚除学生时,学生成绩必需一并删除。

删除副表

请打开 GradeViewComponent.kt,在原来的表格最後加上删除 按键

    Student.getById(studentId).grades.fetch().forEach {grade ->
        grades.apply {
            div("table") {
                div("tr") {
                    div("td") { label("${grade.description}") }
                    div("td") { label("${grade.mandarin}") }
                    div("td") { label("${grade.english}") }
                    div("td") { label("${grade.math}") }
                    div("td") { label("${grade.pe}") }
                    button("删除"){
                        addThemeVariants(ButtonVariant.LUMO_TERTIARY, ButtonVariant.LUMO_SMALL )
                        onLeftClick { grade.delete(); refresh() }
                    }
                }

            }

        }
    }

执行结果如下

https://ithelp.ithome.com.tw/upload/images/20210926/2013868047VPDL3kcq.png

删除主表

请打开Student.kt,复写delete()方法

    override fun delete() {
        Grade.deleteBy { Grade::student_id eq id }
        super.delete()
    }

当主表删除时须连带删除附表,这里复写Student 的delete()方法,在删除学生资料前先删除成绩资料。


<<:  Day 26 Socket的实际应用(二)

>>:  Material UI in React [ Day 25 ] Styles Advanced

JS 22 - 探险时间!深入查询物件的所有子属性!

大家好! 如果要深入查询一个多层物件,一般都是用 Object.keys 等方法,今天就是要简化这样...

环境建置(2)

昨日安装完Anaconda後,今天要继续安装需要的lib, (1)先用管理者权限打开Anaconda...

30天不间断的文章之旅_变数宣告的 var、let、const

这是第一次在公开的地方撰写 JavaScript 相关的技术文章,若有错误或需要补充的地方,也欢迎在...

第二十六天:在 TeamCity 上显示 API 文件

昨天我们介绍了如何用 KDoc 语法标记程序码并用 Dokka 来产生 API 文件,今天我们要将产...

2022重拾程序-练英打

毕竟已经在四月份时决心要再继续写程序,而且既然都在上六角程序体验营,不如就顺便照着老师的说明练练英打...