cs_limalima
Messages postés124Date d'inscriptiondimanche 31 août 2008StatutMembreDernière intervention16 décembre 2010
-
23 déc. 2009 à 10:28
sabrineisimm
Messages postés9Date d'inscriptionjeudi 11 avril 2013StatutMembreDernière intervention11 avril 2013
-
9 avril 2010 à 13:31
Bonjour à tous,
j'ai un problème sur une application utilisant JPA, je pense que c'est dû à mon fichier de configuration que voici:
-----------------------------------------
<!-- pour voir les requetes SQL -->
<!-- parametres de connection JDBC -->
normalement une fois que j'exécute mon code, la table qui porte le nom de mon entity doit être crée, mais ce n'est pas le cas!!
alors si vous pouvez regarder mon fichier, peut être il ya des choses pas propres dedans , merci à vous
NB:la base planning existe déjà, et donc la table aurez dû se trouver dedans
-----------------------------------------
cs_limalima
Messages postés124Date d'inscriptiondimanche 31 août 2008StatutMembreDernière intervention16 décembre 2010 24 déc. 2009 à 10:57
Bonjour,
j bien modifié le fichier, mais le problème
perciste, en plus l'exemple provient d'une sources sur le net qui fonctionne!!
au fait quand je lance le fichier add.xhtml, la page se lance bien, mais quand je clic sur le bouton Ajoute(pour ajouter une personne) et la ça plante et voici l'erreur:
/**
* Cette classe représente une personne. C'est une entité persistente vu qu'on
* l'a annoté avec l'annotation Entity.
*
* @author [mailto:djo.mos.contact@gmail.com djo.mos]
*
*/
@Entity
public class Person implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private Long id;
private String firstName;
private String lastName;
public Person(){}
/**
* C'est l'accesseur de l'identifiant.
* On indique qu'un champ est un identifiant en l'annotant avec Id.
* De plus, si on ajoute GeneratedValue, alors c'est la base de données ou
* l'implémentation JPA qui se charge d'affecter un identifiant unique.
*
* @return l'identifiant.
*/
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName=lastName;
}
}
---------------------------------------------
la classe d'acces aux données:
package jpa;
import java.util.List;
import javax.faces.model.ListDataModel;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import jpa.Person;
/**
* C'est le DAO qui permet d'effectuer des opérations portant sur une personne
* dans la base de données.
*
* @author [mailto:djo.mos.contact@gmail.com djo.mos]
*
*/
public class PersonDao {
private static final String JPA_UNIT_NAME = "jsf-crud";
private EntityManager entityManager;
protected EntityManager getEntityManager() {
if (entityManager == null) {
entityManager = Persistence.createEntityManagerFactory(
JPA_UNIT_NAME).createEntityManager();
}
return entityManager;
}
@SuppressWarnings("unchecked")
public List findAll() {
List persons = (List) getEntityManager().createQuery(
"select p from Person p").getResultList();
return persons;
}
public Person insert(Person u) {
getEntityManager().getTransaction().begin();
getEntityManager().persist(u);
getEntityManager().getTransaction().commit();
return u;
}
//la méthode delate()
public void delete(Person p)
{
getEntityManager().getTransaction().begin();
getEntityManager().merge(p);//le reatache au contexte de persistence
getEntityManager().remove(p);
getEntityManager().getTransaction().commit();
@ManagedBean(name="personCtrl")
@SessionScoped
public class PersonCtrl {
private PersonDao pDao = new PersonDao();
private ListDataModel persons;
private Person newPerson = new Person();
public Person getNewPerson()
{
return newPerson;
}
public String createPerson() //créer une personne
{
pDao.insert(newPerson);
newPerson = new Person();
persons.setWrappedData(pDao.findAll());
return "view";
}
public String DeleteCtrl()//supprimer une personne
{
pDao.delete((Person) (getPersons().getRowData()));
persons.setWrappedData(pDao.findAll());
return null;
}
public String modifier()//modifier une persone
{
pDao.update((Person) getPersons().getRowData());
persons.setWrappedData(pDao.findAll());
return null;
}
}
------------------------------------------
la vue:add.xhtml:celle ci permet de créer une personne et appelle la classe view.xhtml
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 24 déc. 2009 à 11:05
Salut,
Qu'il plante lorsque tu clique sur le bouton de ta page HTML n'a pas grand chose à voir avec la création des tables automatiquement par le fichier persistence.xml...
Est-ce que déjà les tables sont bien crées dans ta base de données lorsque tu déploie ton application ? (c'était ta question d'origine...).
Ensuite, pour ton problème d'exception qui est levée, je dirais que ca vient plutôt que ca vient des bibliothèques déployées sur ton serveur J2EE. Un ClassNotFoundException vient, comme son nom l'indique, d'une classe qu'il ne trouve pas (rien à voir avec le fichier persistence.xml donc...), et vu la classe qu'il ne trouve pas, je dirais que c'est JPA qui n'est pas reconnu par ton serveur d'application ! Quel est-il ?
______________________________________
DarK Sidious
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_limalima
Messages postés124Date d'inscriptiondimanche 31 août 2008StatutMembreDernière intervention16 décembre 2010 24 déc. 2009 à 11:21
Bonjour, merci pour les précisions,
pour le serveur d'application, je ne veux pas l'utiliser, car je cherche juste à faire tourner une application web sans JEE, j'utilise pour cela le serveur web tomcat
quant à la création de la table, elle n'est pas crée:
je vais dans la console de mysql et je fais par exemple:
mysql> select * from person;
et le résultat:
ERROR 1146 (42S02): Table 'planning.person' doesn't exist
donc je ne sais pas, merci si vous pouvez me donner d'autres infos
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 24 déc. 2009 à 11:32
Salut,
Je vois pas trop ce que tu veux faire : tu veux faire tourner une application web sans J2EE, mais tu développe des JSP et des servlets... et surtout, tu utilise JPA, qui est une partie non négligente de J2EE ! Donc, tu fais déjà du J2EE, même si tu n'as pas l'air de t'en rendre compte. Il te faut donc un serveur J2EE pour pouvoir interprêter ton code.
Attention, Tomcat n'est pas un serveur J2EE, ce n'est qu'un conteneur de servlet ! Il n'est pas capable d'utiliser des EJB ! et donc, incapable d'accèder à une base de données par JPA... et il ne peut pas créer les tables dans la base de données...
Donc à toi de voir : soit tu utilise un serveur d'appliation J2EE (tel que JBoss, Jonas, Glassfish, etc.), soit tu n'utilise pas les EJB pour te connecter à ta base de données, et utilise ce bon vieux Hibernate par exemple pour garder une abstraction pour l'accès à ta base de données, soit tu passes à un langage plus approprié pour faire des sites web sans utiliser J2EE, tel que PHP par exemple.
______________________________________
DarK Sidious
cs_limalima
Messages postés124Date d'inscriptiondimanche 31 août 2008StatutMembreDernière intervention16 décembre 2010 24 déc. 2009 à 12:09
Bonjour,
je n'ai pas utilisé EJB dans mon application,
la classe Person est juste une classe qui doit être persistée dans la base en utlisant les annotations Entity..., quant l'utilisation de JPA on peut l'utilisé hors le contexte JEE dans le J2SE
cs_limalima
Messages postés124Date d'inscriptiondimanche 31 août 2008StatutMembreDernière intervention16 décembre 2010 24 déc. 2009 à 12:14
bonjour, en fait ici j'ai utilisé hibernate,
JPA est juste une façade et cache l'ORM hibernate, regardez, c'est configuré dans le ficher de persistance que voici:
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 24 déc. 2009 à 12:57
Salut,
Y n'empêche que tomcat ne permet pas d'utiliser directement JPA. Il te faut un minimum de bibliothèques pour pouvoir l'utiliser avec tomcat, d'où l'exception que tu obtiens de classe non trouvée : il ne trouve pas le package javax.persistence, qui est le package de JPA.
sabrineisimm
Messages postés9Date d'inscriptionjeudi 11 avril 2013StatutMembreDernière intervention11 avril 2013 9 avril 2010 à 13:31
Bonjour à tous
je suis débutante en JEE j'utilise netbeans 6.8 et oracle 10g v1
aprés avoir créer mon projet entreprise Edition (3 module : ear, ejb et war) je voudrai bien utiliser la notion de persistence alor j'ai crée mon fichier persistence.xml ainsi mes entity bean from data base.
voici mon fichier persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
org.hibernate.ejb.HibernatePersistence
ensuite je voudrai bien creer une simple page JSF pour toutes mes table afin de faciliter la manipulation des données dans ma base oracle. pr cela j'ai fé ds le prjet war new jsf page from entity class
lorsque je fé build and clean (prj war) => build succesful
mé lorsq je fé deploy ( une exception m'apparait et je ne sé pa la cause ?!! )
voici l'exception C:\Documents and Settings\safaa\Mes documents\NetBeansProjects\PfeDmp\PfeDmp-war\nbproject\build-impl.xml:588: The module has not been deployed.
BUILD FAILED (total time: 24 seconds)
svp qlq peut m'expliquer les notion de base d'un Pjr JEE et les différentes etapes à suivre et comment rectifier ce PB
merci bcp