Persister une entité ejb+jsf+glassfish

ndeyemaroc
Messages postés
5
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
14 octobre 2009
- 8 oct. 2009 à 19:01
ndeyemaroc
Messages postés
5
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
14 octobre 2009
- 14 oct. 2009 à 19:46
Salut à tout le monde
Je travaille sur un projet jEE, j'utilise ejb, jsf et comme serveur glassfish. J'ai une entité client dont je veux persiter dans la BD après que celui s'est inscrit
voici le code du session bean
[b]public Object persistEntity(Object entity) {
em.persist(entity);
return entity;
}/b

voici le code du managed bean
[b]public String inscription() {
clt.setStatutClient("E");
clientlocal.persistEntity(clt);
clt.setIdClient(0);
return "inscription";
}/b

voici l'erreur
État HTTP 500 -

--------------------------------------------------------------------------------

type Rapport d'exception

Message

DescriptionLe serveur a rencontré une erreur interne () qui l'a empêché de remplir cette requête.

Exception

javax.servlet.ServletException: #{mbeanclient.inscription}: javax.ejb.EJBException
Cause racine

javax.faces.FacesException: #{mbeanclient.inscription}: javax.ejb.EJBException
Cause racine

javax.faces.el.EvaluationException: javax.ejb.EJBException
Cause racine

javax.ejb.EJBException
Cause racine

java.lang.ClassCastException: java.lang.String

voici l'erreur sur le fichier server.log
[b]
ATTENTION: java.lang.ClassCastException: java.lang.String/b
Caused by: java.lang.ClassCastException: java.lang.String
at oracle.toplink.essentials.sequencing.QuerySequence.updateAndSelectSequence(QuerySequence.java:284)
at oracle.toplink.essentials.sequencing.StandardSequence.getGeneratedVector(StandardSequence.java:96)
at oracle.toplink.essentials.sequencing.DefaultSequence.getGeneratedVector(DefaultSequence.java:168)
at oracle.toplink.essentials.sequencing.Sequence.getGeneratedVector(Sequence.java:281)
at oracle.toplink.essentials.internal.sequencing.SequencingManager$Preallocation_Transaction_NoAccessor_State.getNextValue(SequencingManager.java:420)
at oracle.toplink.essentials.internal.sequencing.SequencingManager.getNextValue(SequencingManager.java:846)
at oracle.toplink.essentials.internal.sequencing.ClientSessionSequencing.getNextValue(ClientSessionSequencing.java:110)
at oracle.toplink.essentials.internal.descriptors.ObjectBuilder.assignSequenceNumber(ObjectBuilder.java:240)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.assignSequenceNumber(UnitOfWorkImpl.java:355)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNotRegisteredNewObjectForPersist(UnitOfWorkImpl.java:3266)
at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.registerNotRegisteredNewObjectForPersist(RepeatableWriteUnitOfWork.java:432)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:3226)
at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist(EntityManagerImpl.java:221)
at com.sun.enterprise.util.EntityManagerWrapper.persist(EntityManagerWrapper.java:440)
at ass.sessionbean.internaute.SessionBeanClient.persistEntity(SessionBeanClient.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1011)
at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:175)
at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2920)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4011)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:197)
... 45 more

Je ne comprends pas ce qu'il veut signaler par là l'erreur c'est au niveau de clientlocal.persistEntity(clt);

Merci de votre aide

4 réponses

Ombitious_Developper
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
38
13 oct. 2009 à 15:28
Salut:

Est ce que tu peux envoyer le code de l'entité Client?
0
ndeyemaroc
Messages postés
5
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
14 octobre 2009

14 oct. 2009 à 11:32
salut,
voici le code de l'entité client
package ass.entity.bean.internaute;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

@Entity
@NamedQueries({
@NamedQuery(name "Client.findAll", query "select o from Client o where o.statutClient='E'")
})
@Table(name = "client")
public class Client implements Serializable {
@Id
@Column(name="idClient", nullable = false)
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer idClient;
@Column(name="nomClient")
private String nomClient;
@Column(name="prenomClient")
private String prenomClient;
@Column(name="sexeClient")
private String sexeClient;
@Column(name="sitFamClient")
private String sitFamClient;
@Column(name="adresseClient")
private String adresseClient;
@Column(name="telClient")
private String telClient;
@Column(name="faxClient")
private String faxClient;
@Column(name="emailClient")
private String emailClient;
@Column(name="villeClient")
private String villeClient;
@Column(name="paysClient")
private String paysClient;
@Column(name="motpasseClient")
private String motpasseClient;
@Column(name="identifiantClient")
private String identifiantClient;
@Column(name="statutClient")
private String statutClient;

public Client() {
}

public Integer getIdClient() {
return idClient;
}

public void setIdClient(Integer idClient) {
this.idClient = idClient;
}

public String getNomClient() {
return nomClient;
}

public void setNomClient(String nomClient) {
this.nomClient = nomClient;
}

public String getPrenomClient() {
return prenomClient;
}

public void setPrenomClient(String prenomClient) {
this.prenomClient = prenomClient;
}

public String getSexeClient() {
return sexeClient;
}

public void setSexeClient(String sexeClient) {
this.sexeClient = sexeClient;
}

public String getSitFamClient() {
return sitFamClient;
}

public void setSitFamClient(String sitFamClient) {
this.sitFamClient = sitFamClient;
}

public String getAdresseClient() {
return adresseClient;
}

public void setAdresseClient(String adresseClient) {
this.adresseClient = adresseClient;
}

public String getEmailClient() {
return emailClient;
}

public void setEmailClient(String emailClient) {
this.emailClient = emailClient;
}

public String getTelClient() {
return telClient;
}

public void setTelClient(String telClient) {
this.telClient = telClient;
}

public String getFaxClient() {
return faxClient;
}

public void setFaxClient(String faxClient) {
this.faxClient = faxClient;
}

public String getVilleClient() {
return villeClient;
}

public void setVilleClient(String villeClient) {
this.villeClient = villeClient;
}

public String getPaysClient() {
return paysClient;
}

public void setPaysClient(String paysClient) {
this.paysClient = paysClient;
}

public String getMotpasseClient() {
return motpasseClient;
}

public void setMotpasseClient(String motpasseClient) {
this.motpasseClient = motpasseClient;
}

public String getIdentifiantClient() {
return identifiantClient;
}

public void setIdentifiantClient(String identifiantClient) {
this.identifiantClient = identifiantClient;
}

public String getStatutClient() {
return statutClient;
}

public void setStatutClient(String statutClient) {
this.statutClient = statutClient;
}
}
0
Ombitious_Developper
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
38
14 oct. 2009 à 12:40
Salut:

Tout d'abord, pour persister/mettre à jour une entité, tu dois créer une transaction:

EntityTransaction et = em.getTransaction();
et.begin();
et.persist(entity);
et.commit();
0
ndeyemaroc
Messages postés
5
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
14 octobre 2009

14 oct. 2009 à 19:46
salut,
non ce n'est pas la peine à mon avis, ce même code je l'ai déjà fait et ça marchait bien mais j'ai eu des problèmes avec ma machine j'ai transféré les données sur une autre machine et c'est de là bas qu'ont commencé ces problèmes de casting qu'il me souligne.

C'est dans la session bean que j'ai mis em.persit(entity) dans la méthode pesistEntity que j'ai appelée dans le managed bean.

Je ne pense pas que se soit un problème de code mais un problème de casting mon problème est que là où il le signale je vois pas d'erreur à ce stade.

Merci je vous écoute si vous avez d'autres suggestions.
0