J'ai un problème dans les opérations de base de CRUD sur une base de données dans mon application J2EE.Pourquoi ma méthode update() crée-t-elle une nouvelle instance?
Entité:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "shop_id")
Façade:
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
public void edit(T entity) {
getEntityManager().merge(entity);
}
}
Controller (j'ai ajouté de S.out pour voir ce qui se passe):
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";
}
Et quand je clique sur la mise à jour, un Une nouvelle instance est créée au lieu de modifier celle existante. Ceci est la sortie du journal du serveur:
Info: Update
Info: Name - 41
Info: UpdateClick
Info: ChangedName - null
Donc, l'Id disparaît en quelque sorte. Cela se produit au moment où j'appelle updateShop(), parce que j'affiche l'ID sur ma page JSF et cela fonctionne très bien.
<h:outputText value="#{shopController.shop.shopId}" title="shopId" />
Une idée de ce qui se passe?
Merci.
Nous avons besoin de voir le reste de votre jsf pour savoir ce qui lie à ce magasin – Miles
bien, problème commun dans Jsf, si vous n'avez pas lier l'objet correctement. afficher le code JSF et le contrôleur correctement si vous n'avez pas résolu le problème .. –