我有一个Spring控制器方法的问题.它实际上对导致StaleObjectStateException的同一实体进行了两次更新.
问题是,当我检索Member实例时,我认为它会以某种方式导致更新(请参阅//UPDATE ONE)Advertisement实例(实际上并不需要),当我更新Advertisement实例(请参阅参考资料//UPDATE TWO)时,它会抛出StaleObjectStateException.
我的问题是如何防止在我的情况下发生此异常(请记住我使用Spring Data JPA)?
这是Member实体类:
@Entity
public class Member {
...
@OneToMany(fetch = FetchType.LAZY, mappedBy = "member")
private List<Advertisement> advertisements;
...
Run Code Online (Sandbox Code Playgroud)
并在Advertisement实体类中:
@NotNull
@ManyToOne(fetch = FetchType.LAZY)
private Member member;
Run Code Online (Sandbox Code Playgroud)
这是控制器方法:
@RequestMapping(value = "/family/advertisement/edit", method = RequestMethod.POST, produces = "text/html")
public String editFamilyAdvertisement(@ModelAttribute @Validated(value = Validation.AdvertisementCreation.class) FamilyAdvertisementInfo familyAdvertisementInfo, BindingResult bindingResult, Model model) {
Member member = memberService.retrieveCurrentMember();//UPDATE ONE
if (!advertisementService.advertisementBelongsToMember(familyAdvertisementInfo.getFamilyAdvertisement(), member)) {
throw new IllegalStateException("advertisement …Run Code Online (Sandbox Code Playgroud)