java - @OneToOne 与 CascadeType.ALL 没有被删除?

标签 java hibernate

我想在从数据库中删除父对象时删除任何附加的子对象。但它不起作用:

@Entity
public class ParentEntity {
    @Id
    private Long id;    

    //must remain unidirectional
    @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
    private MyEntity my;

}

@Entity
public class MyEntity {
    private String text;
}

public interface ParentEntityRepository extends CrudRepository<ParentEntity, Long> {}

当我执行时:

@Autowired
private ParentEntityRepository  dao;

@Transactional
public void removeId(long id) {
      dao.delete(id);
}

结果: MyEntity 行仍然存在于数据库中!为什么?

最佳答案

你可以试试这个

@OneToOne(cascade = CascadeType.DELETE_ORPHAN)
private MyEntity my;

如果不起作用,您可以尝试以下方法:

Hibernate deleting orphans when updating collection

关于java - @OneToOne 与 CascadeType.ALL 没有被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32089967/

相关文章:

java - Spring security - 拦截 url 模式映射

java - Spring Boot 所需的请求部分 'file' 不存在

java - 使用隐式 Intent 发送电子邮件

hibernate - 何时使用 HQL 而不是 Hibernate OO 方法?

java - 在 JPA 持久性单元中定义一个名为的重复生成器是否可以?

java - 即使数据库已关闭,如何使 Spring 服务器启动?

java - 如何使用 Spring Cloud Stream 和 Kafka Streams Binder 暂停(打开/关闭)流处理?

java - Hibernate 忽略@OneToMany 映射的@JoinColumn 值

java - jpa-springEntitymanager.find超时不起作用

java - map 泛型类型和代理的推土机问题