Bonjour à tous !
Je suis sur un projet wicket et je fais pour l'instant persister des éléments à l'init. Pour tester la récupération d'un de ces éléments je lance la méthode "findClientEntities()", qui doit me retourner une liste de toutes les entités .Seulement ça merde et j'ai un joli message d'erreur :
La DAO est générée par Netbeans, je n'ai qu'à créer les pojo annotés pour lui dire quoi faire. Je vous mets ci-dessous le persistence.xml, la classe Client et son contrôleur DAO :ATTENTION: failed org.mortbay.jetty.plugin.Jetty6PluginWebAppContext@4a32ef2d{/SafeDriving,/home/GiZeus/NetBeansProjects/SafeDriving/src/main/webapp}: java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerImpl.getCriteriaBuilder()Ljavax/persistence/criteria/CriteriaBuilder;
2 juin 2011 16:06:41 org.mortbay.log.Slf4jLog warn
ATTENTION: failed ContextHandlerCollection@774096e6: java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerImpl.getCriteriaBuilder()Ljavax/persistence/criteria/CriteriaBuilder;
2 juin 2011 16:06:41 org.mortbay.log.Slf4jLog warn
ATTENTION: failed HandlerCollection@31731334: java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerImpl.getCriteriaBuilder()Ljavax/persistence/criteria/CriteriaBuilder;
2 juin 2011 16:06:41 org.mortbay.log.Slf4jLog warn
GRAVE: Error starting handlers
java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerImpl.getCriteriaBuilder()Ljavax/persistence/criteria/CriteriaBuilder;
at com.safedriving.dao.ClientJpaController.findClientEntities(ClientJpaController.java:157)
at com.safedriving.dao.ClientJpaController.findClientEntities(ClientJpaController.java:147)
at com.safedriving.SafeDrivingApplication.checkDB(SafeDrivingApplication.java:73)
at com.safedriving.SafeDrivingApplication.init(SafeDrivingApplication.java:53)
at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:726)
at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6PluginWebAppContext.java:115)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.plugin.Jetty6PluginServer.start(Jetty6PluginServer.java:132)
at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:454)
at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:396)
at org.mortbay.jetty.plugin.AbstractJettyRunMojo.execute(AbstractJettyRunMojo.java:210)
at org.mortbay.jetty.plugin.Jetty6RunMojo.execute(Jetty6RunMojo.java:184)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Persistence.xml
Client.java<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="safeDriving-PU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.safedriving.beans.Agence</class>
<class>com.safedriving.beans.Calendrier</class>
<class>com.safedriving.beans.Formule</class>
<class>com.safedriving.beans.HistoriqueClient</class>
<class>com.safedriving.beans.Lieu</class>
<class>com.safedriving.beans.Offre</class>
<class>com.safedriving.beans.Offre2Formule</class>
<class>com.safedriving.beans.PanierClient</class>
<class>com.safedriving.beans.Partenaire</class>
<class>com.safedriving.beans.SessionFormation</class>
<class>com.safedriving.beans.Vehicule</class>
<class>com.safedriving.beans.Vehicule2Session</class>
<class>com.safedriving.beans.personnes.Client</class>
<class>com.safedriving.beans.personnes.Commercial</class>
<class>com.safedriving.beans.personnes.Direction</class>
<class>com.safedriving.beans.personnes.Formateur</class>
<properties>
<!-- Autodétection des classes à persister -->
<!--
<property name="hibernate.archive.autodetection" value="class, hbm"/>
-->
<!-- connexion JDBC -->
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost/safeDriving"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="root"/>
<!-- création automatique du schéma -->
<property name="hibernate.hbm2ddl.auto" value="validate"/>
<!-- dialecte -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
</properties>
</persistence-unit>
</persistence>
Controleur DAO
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 @Entity //@UniqueConstraint(columnNames={}) public class Client implements Serializable{ @Id @GeneratedValue(strategy=GenerationType.AUTO) protected int id; @Version protected Long version; @Column(length=20) protected String login; @Column(length=50) protected String password; @Column(length=32, nullable=false) protected String nom; @Column(length=32, nullable=false) protected String prenom; @Column(length=3, nullable=false) protected String sexe; @Temporal(javax.persistence.TemporalType.DATE) protected Date naissance; @Column(length=60, nullable=false) protected String adresse; @Column(length=32, nullable=false) protected String ville; @Column(length=15, nullable=false) protected String telephone; @Column(length=50, nullable=false) protected String email; @ManyToOne @JoinColumn(name="idAgenceClient", referencedColumnName="id") private Agence agence; @Temporal(javax.persistence.TemporalType.DATE) @Column(nullable=false) private Date dateInscription; @Temporal(javax.persistence.TemporalType.DATE) @Column(nullable=true) private Date dateCodeRoute; @ManyToOne @JoinColumn(name="idCommercialClient", referencedColumnName="id") private Commercial commercial; @ManyToMany @JoinTable(name="HistoriqueClient", joinColumns=@JoinColumn(name="idClientHistorique"), inverseJoinColumns=@JoinColumn(name="idSessionFormationHistorique")) private List<SessionFormation> sessionsFormation; public Client(){ } // constructeur complet + accesseurs
Je suis en Java EE 6, choix effectué en raison de la DAO générée dans cette version.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 public class ClientJpaController { public ClientJpaController() { emf = Persistence.createEntityManagerFactory("safeDriving-PU"); } private EntityManagerFactory emf = null; public EntityManager getEntityManager() { return emf.createEntityManager(); } //... public List<Client> findClientEntities() { return findClientEntities(true, -1, -1); } public List<Client> findClientEntities(int maxResults, int firstResult) { return findClientEntities(false, maxResults, firstResult); } private List<Client> findClientEntities(boolean all, int maxResults, int firstResult) { EntityManager em = getEntityManager(); try { CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); cq.select(cq.from(Client.class)); Query q = em.createQuery(cq); if (!all) { q.setMaxResults(maxResults); q.setFirstResult(firstResult); } return q.getResultList(); } finally { em.close(); } }
Merci d'avance pour votre aide.
Partager