Salut à tous !
J'essaie de déployer un projet simple sous JBoss 6 et j'ai un bête problème: il ne détecte pas mes entités. J'ai correctement déclarer mon datasource (la connexion à la BDD est bien établie) et voici mon persistence.xml (j'utilise OpenJPA 2.2.0):
Dans mon code, je dispose d'un bête Stateless Bean qui fait la requête suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="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="SimpleJBoss-PU" transaction-type="JTA"> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> <jta-data-source>java:jdbc/dbcon</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="openjpa.jdbc.DBDictionary" value="storeCharsAsNumbers=false,JoinSyntax=sql92"/> <property name="openjpa.Compatibility" value="QuotedNumbersInQueries=true"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> </properties> </persistence-unit> </persistence>
Mon entité se présente comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Query q = entityManager.createQuery("SELECT p FROM Cgejsa p"); List<Cgejsa> entries = q.getResultList();
Mais lorsque j'accède à mon EJB, JBoss me sort l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 @Entity @Table(name = "cgejsa") public class Cgejsa implements Serializable, Cloneable { private static final long serialVersionUID = 1L; @EmbeddedId protected CgejsaPK cgejsaPK; @Column(name = "NOFINA") private String nofina; /* ... */ }
De toute évidence, il ne détecte pas du tout mon entité, alors que mon projet semble correctement configuré (Netbeans 7.1.1). Je ne parviens pas à comprendre ce que j'ai oublié. J'ai bien essayé de spécifier l'entité au moyen de la balise <class> dans le persistence.xml, mais du coup j'obtiens une autre erreur tout aussi incompréhensible (j'ai utilisé la tâche ant pour le enhancement) :Servlet.service() for servlet EntryPoint threw exception: javax.ejb.EJBException: <openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: An error occurred while parsing the query filter "SELECT p FROM Cgejsa p". Error message: The name "Cgejsa" is not a recognized entity or identifier. Known entity names: []
Le seul truc bizarre que je vois passer au déploiement est ça:23:22:01,888 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/SimpleApplication-war].[EntryPoint]] Servlet.service() for servlet EntryPoint threw exception: javax.ejb.EJBException: <openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "
Mais je ne sais pas quoi faire pour solutionner cela. Est-ce que quelqu'un aurait une piste ?23:06:00,974 ERROR [STDERR] 52 SimpleJBoss-PU INFO [HDScanner] openjpa.Enhance - You have enabled runtime enhancement, but have not specified the set of persistent classes. OpenJPA must look for metadata for every loaded class, which might increase class load times significantly.
23:06:01,030 INFO [org.hibernate.validator.engine.resolver.DefaultTraversableResolver] Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
23:06:01,035 ERROR [STDERR] 32 SimpleJBoss-PU INFO [HDScanner] openjpa.Runtime - OpenJPA dynamically loaded a validation provider.
Merci d'avance !
Partager