java如何保存分离的实体并替换一对多关系的内容?
在对分离的实体调用save()时,我想替换一对多关系的内容,但它只添加新的实例,而不删除旧的实例(我不想从数据库中加载实体)
是否有在不加载/附加实体的情况下清除关系的设置
我使用的是spring数据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;
}
刀
public interface StuffDao extends JpaRepository<Stuff, Long> {}
谢谢你的帮助
# 1 楼答案
我找到了解决办法! 我不得不加上孤儿搬迁
这很奇怪,因为我一直认为瀑布。移除Cascade中包含的内容。都有同样的效果
无论如何,我现在可以在分离状态下保存实体并替换其关系
谢谢大家