Lo que pasa es que quiero usar JPA y estoy usando openjpa pero he tenido problemas ya que no puedo hacer funcionar a JPA y es que en la documentacion dice que debo tener el archivo persistence.xml en la carpeta META-INF y mediante ant ya la he puesto y segun yo deberia funcionar, pero no y me manda este error
<openjpa-2.1.1-r422266:1148538 fatal user error> org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property.
en el xml tengo definido el driver, por lo que siento que no esta encontrando el archivo de configuracion persistence.xml
aqui esta mi archivo
Código xml:
Ver original
<?xml version="1.0"?> <persistence version="1.0"> <persistence-unit name="openjpa"> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> <class>persistencia.Clase</class> <properties> <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/"/> <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/> <property name="openjpa.ConnectionUserName" value="root"/> <property name="openjpa.ConnectionPassword" value="root"/> <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/> </properties> </persistence-unit> </persistence>
y donde me da el error esta aqui
Código Java:
Ver original
EntityManagerFactory factory = Persistence.createEntityManagerFactory("openjpa"); EntityTransaction tx = em.getTransaction();
la localizacion del driver no debe ser problema ya que cuando creo programaticamente mi unidad de persistencia con el codigo de abajo si funciona la conexion (aunque no funciona las operaciones de Persistencia en las Entidades ya que en este codigo no las defino)
Código Java:
Ver original
props.put("openjpa.ConnectionURL", "jdbc:mysql://localhost:3306/"); props.put("openjpa.ConnectionDriverName", "com.mysql.jdbc.Driver"); props.put("openjpa.ConnectionUserName", "root"); props.put("openjpa.ConnectionPassword", "root"); props.put("openjpa.Log", "DefaultLevel=WARN, Tool=INFO"); EntityManagerFactory emf = Persistence.createEntityManagerFactory("openjpa", props); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); //em.persist(carta); <-- aqui da error ya quw no sabe que Carta es una unidad de persistencia tx.commit();
que tengo que hacer para que funcione, muchas gracias por sus respuestas