java - JPA 关系实体在数据库上更新,但不在现场更新

标签 java spring jpa orm

我在 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);

}

当我这样做时,我的数据库会更新,但我的 View 不会更新。我必须重新启动服务器才能使这些更改出现。

我尝试在 em.merge(product); 之后编写 em.refresh(product); 但出现此错误:

Can not refresh not managed object: package.Product@33891d5d

我很困惑,不知道如何解决这个问题。你能帮我一下吗?

最佳答案

尝试使用entityManager再次查找实体。这应该为实体提供更新的值。

关于java - JPA 关系实体在数据库上更新,但不在现场更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18560124/

相关文章:

java - docx4j : "No suitable JAXB implementation available" runtime error Java 1. 5

java - 在不加载 View 的情况下从 fragment 中获取数据

spring - Camel Spring EMS SSL 不工作

java - 如何动态更改持久性单元?

java - 转换为东部时区(北美)

java - 为什么用户提交注册表单时没有执行registerSubmit? Spring

java - Spring RestTemplate 抛出 IllegalArgumentException : not a valid HTTP URL

java - JPA 实体未更新

java - 具有依赖倒置的多对多关系

java - 如何从JSP页面获取数据到servlet