我在JPA中获得了产品和评级实体。JPA关系实体更新了数据库,但未在网站上
在Product.java:
@OneToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE})
@JoinColumn(name="rating_id")
@JsonManagedReference("product-rating")
private Rating rating;
在Rating.java:
@OneToOne(mappedBy="rating",cascade=CascadeType.MERGE)
@JsonBackReference("product-rating")
private Product product;
在我JPAService实现:
@Override
@Transactional
public void updateCartLineRating(CartLine cartLine, int rating) {
cartLine.setRating(rating);
em.merge(cartLine);
Product product = cartLine.getProduct();
Rating productRatingObject = product.getRating();
// Here I calculate new rating, then I set it:
productRatingObject.setRating(productRating);
// I associate the new Rating to Product (which is the relationship owner) and viceversa
productRatingObject.setProduct(product);
product.setRating(productRatingObject);
em.merge(product);
}
当我这样做,我的数据库进行更新,而我的观点不是。我必须重新启动服务器才能显示这些更改。
我试着写em.merge(product);
后em.refresh(product);
但我得到这个错误:
Can not refresh not managed object: [email protected]
我正在困惑,我不知道如何解决这个问题。你可以帮我吗?
所以如果你找到()产品没有更新? –
尝试执行'equals()和hashcode()'并尝试用'find()' –
@KevinBowersox重新获取实体,如果找到()该产品,我会得到正确的值。 “执行equals和hashcode()”意味着什么? –