如何保存独立的实体并取代一个人的关系



我想在一个独立实体上调用save()时要替换一个人的关系,但它只会添加新事件并且不会删除旧事件(我不删除旧事件想从数据库加载实体)。

是否有一个设置可以清除关系而不加载/附加实体?

我正在使用spring-data-jpa。

这是我的服务:

@Component
@Transactional
public class StuffService {
    @Autowired
    StuffDao stuffDao;
    public void save(StuffDto stuffDto) {
        // The converter maps the properties into the entity, id included
        Stuff stuff= stuffConverter.dtoToBo(stuffDto);
        stuffDao.save(stuff);
    }
}

dtos

public class StuffDto {
    private Long id;
    @NotNull(message = "products-empty")
    @Valid
    private List<ProductStuffDto> products;
}
public class ProductStuffDto {
    Integer order;
    String name;
}

实体

@Entity
public class Stuff {
    @Id
    @GeneratedValue
    private Long id;
    @OneToMany(mappedBy = "stuff", cascade = CascadeType.ALL)
    private List<ProductStuff> products;
}
@Entity
public class ProductStuff {
    @Id
    @GeneratedValue
    private Long id;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "stuff_id", nullable = false)
    private Stuff stuff;
    Integer order;
    String name;
}

dao

public interface StuffDao extends JpaRepository<Stuff, Long> {}

谢谢您的帮助。

我找到了解决方案!我不得不添加孤儿。

@OneToMany(mappedBy = "stuff", cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)

这很奇怪,因为我总是cascade.emove包含在cascade中。

无论如何,我现在可以将一个实体保存在独立状态并替换其关系。

谢谢大家

最新更新