在 ObjectBox 中级联删除或对此进行模拟
Cascade deleting or analog of this in ObjectBox
github上有an issue,但现在objectbox不支持级联删除。
除了手动删除之外,还有其他选择吗?
例如型号:
@Entity
class User(val username: String = "") {
@Id(assignable = true)
var id: Long = 0
@Backlink
lateinit var comments: ToMany<Comment>
}
@Entity
class Comment(var text: String = "", var date: Date = Date()) {
@Id(assignable = true)
var id: Long = 0
@Backlink
lateinit var user: ToOne<User>
}
如果我想删除用户和他所有的评论,我应该这样做:
fun deleteUser(user: User, userBox: Box<User>, commentsBox: Box<Comment>) {
commentsBox.remove(user.comments)
userBox.remove(user)
}
但是如果评论有自己的 children,而且它们也一样 — 嵌套会非常大。
我想使用 BoxStore.subscribe(class: Class<Any>)
,但它不能给我 User
的实例来只删除他的 Comment
。
如果没有反思和其他不好的做法能做到吗?
目前,无法手动删除级联。编写您自己的处理嵌套 类 的删除方法。在单个 transaction.
中执行此操作通常是个好主意
Markus Junginger 当然是正确的(因为他是维护者)。目前不支持级联删除。
我只是想补充一点,此功能有一张公开票 here。
github上有an issue,但现在objectbox不支持级联删除。 除了手动删除之外,还有其他选择吗?
例如型号:
@Entity
class User(val username: String = "") {
@Id(assignable = true)
var id: Long = 0
@Backlink
lateinit var comments: ToMany<Comment>
}
@Entity
class Comment(var text: String = "", var date: Date = Date()) {
@Id(assignable = true)
var id: Long = 0
@Backlink
lateinit var user: ToOne<User>
}
如果我想删除用户和他所有的评论,我应该这样做:
fun deleteUser(user: User, userBox: Box<User>, commentsBox: Box<Comment>) {
commentsBox.remove(user.comments)
userBox.remove(user)
}
但是如果评论有自己的 children,而且它们也一样 — 嵌套会非常大。
我想使用 BoxStore.subscribe(class: Class<Any>)
,但它不能给我 User
的实例来只删除他的 Comment
。
如果没有反思和其他不好的做法能做到吗?
目前,无法手动删除级联。编写您自己的处理嵌套 类 的删除方法。在单个 transaction.
中执行此操作通常是个好主意Markus Junginger 当然是正确的(因为他是维护者)。目前不支持级联删除。
我只是想补充一点,此功能有一张公开票 here。