【发布时间】:2016-12-24 20:23:57
【问题描述】:
我的 J2EE 应用程序中的数据库的基本 CRUD 操作存在问题。
实体:
@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 的其余部分以了解与该商店绑定的内容
-
好吧,Jsf 中的常见问题,如果你没有正确绑定 Object。如果您还没有解决问题,请正确发布 JSF 代码和控制器..
标签: jakarta-ee ejb crud enterprise facade