0
我在J2EE应用程序中的数据库的基本CRUD操作中遇到问题。为什么我的update()方法创建一个新的实例?
实体:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "shop_id")
门面:
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
public void edit(T entity) {
getEntityManager().merge(entity);
}
}
控制器(我加S.out的看个究竟):
public String updateShop(Shop shop){
System.out.println("Update ");
System.out.println(this.shop.getName()+" - ID: "+ this.shop.getShopId());
this.shop = shop;
return "updateShop";
}
public String updateShop(){
System.out.println("UpdateClick ");
System.out.println(this.shop.getName()+" - ID: "+ this.shop.getShopId());
this.shopfacade.edit(this.shop);
return "shops";
}
当我点击更新,一新实例被创建而不是修改现有的实例。这是服务器的日志输出:
Info: Update
Info: Name - 41
Info: UpdateClick
Info: ChangedName - null
因此,该Id以某种方式消失。这发生在我调用updateShop()的那一刻,因为我在我的JSF页面上显示了ID,并且它工作正常。
<h:outputText value="#{shopController.shop.shopId}" title="shopId" />
任何想法是怎么回事?
感谢。
我们需要看到你的JSF的其余部分知道什么是绑定到店 – Miles
很好,普通的问题在JSF中,如果你正确因此未绑定的对象。如果您没有解决问题,请正确发布JSF代码和控制器.. –