내 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의 일반적인 문제입니다. Object를 제대로 바인드하지 않았다면. 문제가 해결되지 않았다면 JSF 코드와 컨트롤러를 올바르게 게시하십시오. –