java - 如何@SQLDelete、软删除、具有组合键的实体

标签 java spring-boot hibernate spring-data-jpa

如何获取@SQLDelete中的复合键片段来执行实体的软删除?

@Data
class DummyKey {
    private Long foo;
    private Long bar;
}


@IdClass(DummyKey.class)
@SQLDelete(sql = "UPDATE dummy SET deleted = 'Y' WHERE ???") //how to get key params
@Where(clause = "deleted='N'")
class Dummy {
    @Id
    @Column(name = "foo")
    private Long foo;
    @Id
    @Column(name = "bar")
    private Long bar;

    @Column(name = "stuff")
    private String stuff;

    @Column(name = "deleted")
    private String deleted;
}

最佳答案

复合 ID 的值按照 IdClass 属性的顺序绑定(bind)到准备好的语句,因此这应该有效:

@SQLDelete(sql = "更新虚拟集已删除 = 'Y' WHERE foo=? AND bar=?")

( AbstractEntityPersister 将绑定(bind)委托(delegate)给标识符类型,因此在本例中为 ComponentType ,它在 AbstractComponentTuplizer 的帮助下迭代属性)

关于java - 如何@SQLDelete、软删除、具有组合键的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68130548/

相关文章:

Java - 确定事件顺序 - AB 或 BA

java - 如何从JPA元素集合中的子元素获取父元素?

spring-boot - 如何在 cassandra docker 镜像启动或 Spring Boot 应用程序启动时创建键空间

java - Hibernate + 并发插入(MySQL INSERT IGNORE)

hibernate - 用于 Hibernate 的 Maven Java 源代码生成

java - OSGi 中 bundle 安装后缺少注释

java - Spring - 如何在不调用 ClassPathXmlApplicationContext 的情况下 @Autowire 一个 bean

java - 无法删除列 MSSQL(在 Hibernate 之后?)

java - WELD-001408 类型的不满足依赖关系...在注入(inject)点具有限定符 [@Default]

java - 用不同的Spring Boot插件Gradle多个子项目