简体   繁体   English

将JSF Datatable与Spring Data JPA一起使用时StaleObjectStateException

[英]StaleObjectStateException when using JSF Datatable with Spring Data JPA

@Component
@Scope("view")
public class ProductPriceBean {

    @Autowired
    private ProductPriceDAO productPriceDAO;

    public void saveProductPrice(ProductPrice productPrice){
        productPrice=productPriceDAO.save(productPrice);

//the productPrice returns by the save action is the new object } //保存操作返回的productPrice是新对象}

}

JSF: JSF:

<p:dataTable var="price" value="#{product.prices}" editable="true">
                    <p:ajax event="rowEdit"
                        listener="#{productPriceBean.saveProductPrice(price)}"
                        update=":form:messages" />



                    <p:column headerText="Price">
                        <p:cellEditor>
                            <f:facet name="output">
                                <h:outputText value="#{price.price}" >
                                <f:convertNumber type="currency" currencyCode="GBP"/>
                                </h:outputText>
                            </f:facet>
                            <f:facet name="input">
                                <p:inputText value="#{price.price}" >
                                  <f:convertNumber type="currency" currencyCode="GBP"/>
                                </p:inputText>
                            </f:facet>
                        </p:cellEditor>
                    </p:column>


            <p:rowEditor />  
        </p:column>  

</p:dataTable>

This works fine the first time...but the second time I receive a stale Product exception. 第一次可以正常工作,但是第二次我收到过时的Product异常。 How can update the datatable with new Product? 如何使用新产品更新数据表?

Thxs. 谢谢

This did the trick: 这达到了目的:

public void saveProductPrice(ProductPrice productPrice){
    productPriceDAO.save(productPrice);
    product=productDAO.save(product);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM