Grails 5 RestAPI project
code 1
// A is a Domain class
class A implements RDomain{
}
trait RDomain {
void delete(Map params) {
deleted = true
save(params)
}
void delete() {
deleted = true
save()
}
boolean deleted = false
}
def a = new A().save()
a.delete()
println a.deleted // true, but won't be updated at DB side, no matter flush or not
code 2
class A implements RDomain {
void delete(Map params) {
deleted = true
save(params)
}
void delete() {
deleted = true
save()
}
}
trait RDomain {
boolean deleted = false
}
def a = new A().save()
a.delete() // works
I’d like to implement logical deletion through the deleted field. Among the provided code, code 2 can run correctly, but code 1 cannot. In code 1, when the delete method is called, it only sets the deleted field to true, but cannot save it correctly, and the UPDATE statement at the database level is never called.
Why? And how should the RDomain be modified so that it is not necessary to implement the same delete method separately in each Domain, and at the same time, the logical deletion can be implemented normally?