首页 > 解决方案 > Spring JPA Hibernate JpaRepository 级联 oneToMany 删除不起作用

问题描述

Spring Hibernate Jpa 存储库。

我无法级联删除,我也没有收到任何错误。

我有以下实体并添加了如下关系。

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;

import com.abc.enumerator.ServiceSpecializationEnum;
import com.fasterxml.jackson.annotation.JsonIgnore;

@Entity
public class SpecializationServices extends BaseEntity{

    /**
     * 
     */
    private static final long serialVersionUID = -6438039604817328747L;

    private String name;

    @Enumerated(EnumType.STRING)
    private ServiceSpecializationEnum type;

    //@JsonIgnore
    @OneToMany(mappedBy = "specialization", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
    private List<UserSpecializationServices> userSpecializations;

这是 UserSpecializationServices

import javax.persistence.Entity;
import javax.persistence.ManyToOne;

@Entity
public class UserSpecializationServices extends BaseEntity{

    /**
     * 
     */
    private static final long serialVersionUID = 7884804824368079879L;

    @ManyToOne
    private UserIdentity userIdentity;

    @ManyToOne
    private SpecializationServices specialization;

我的存储库也如下所示。

@Repository
public interface SpecializationServicesRepository extends JpaRepository<SpecializationServices, Long>{
}

我正在对 serviceImpl 执行以下删除操作

    @Transactional
    @Service
    public class SpecializationServiceImpl {        
        @Autowired
        private SpecializationServicesRepository specializationServiceRepository;

        @Override
        public void deleteServices(Long id) {
SpecializationServices specializationService = specializationServiceRepository.findById(id).get();
specializationServiceRepository.delete(specializationService);
        }
    }

即使我也尝试过 Hibernate 包 @cascade(CascadeType.ALL) 但没有运气。我也尝试过 @OnDelete(action = OnDeleteAction.CASCADE) ,它仍然没有删除,也没有抛出任何错误。

如果我在这里遗漏了什么,请告诉我?

标签: springhibernatejpaspring-data-jpaspring-data

解决方案


推荐阅读